熟悉项目过程中

news2024/11/15 13:41:33

刑天机器人本身

背景知识:

刑天与地平线的关系、旭日派的关系?

地平线是一家公司,刑天机器人是他们家的一款产品,是硬件,旭日派也是他们家的一款产品,用作刑天机器人的大脑。   刑天机器人的源代码能安装到旭日派板子上面,也能安装到树莓派(国外的板子)上面。 刑天现在的很贵的这个板子是什么牌子的?

补充:绿色机器人(幻尔公司)运行在 jetson nano板子上面

tros和ros的关系?

tros貌似是基于ros的开发的,是地平线公司在ros上面的封装,有更多高级的功能

机器人本身是如何移动的?

先找到刑天的源代码,就是能控制刑天硬件的代码GitHub - DDTRobot/diablo_ros2: diablo ros2 packagediablo ros2 package. Contribute to DDTRobot/diablo_ros2 development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/DDTRobot/diablo_ros2

根据源代码可以找到开发手册,开发手册说让我们刑天源代码ROS2版本

 

 这里面的前两步是在干嘛?我目前理解的是,可以安装旭日派板子上面,也可以安装在树莓派板子上面,如果不是这两款板子,可以直接 Complie ROS Package

最关键的一条命令:run diablo_ctrl diablo_ctrl_node ,这个是获取到机器人的运动权限

这是一个大概的,更具体的在文档的第三节,展示了刑天机器人的所有node节点

The robot obtains the SDK control permission — DIABLO-Onboard-SDK v2.1 documentation

 机器人获取sdk控制权限

 

这是一个基础的node节点,关于控制机器人运动。 你需要运行diablo_ctrl_node节点获取运动权限。 为了达到控制的效果,你应该把命令用自定义消息格式 MotionCtrl 数据 发送给/diablo/MotionCmd  

查看一下,我们是如何发送信息

找到佳伟哥跑的项目所在的位置:/opt/deploy/diablo-robot

项目目录下面有一个src,但是没有interfaces,和之前的不太一样,就是定义msg,srv,action的东西,这个东西在那里呢?

机器人板子项目地址: /opt/deploy/diablo-robot/src/diablo_run/diablo_run/motion_cmd.py,这个只用来控制机器人起立和机器人通过ctrl + C停止


#!/usr/bin/env python3
import rclpy
import time
from rclpy.node import Node
from motion_msgs.msg import MotionCtrl #导入msg消息格式,msg是什么topic通信的消息体
from geometry_msgs.msg import Twist

def do_stop(teleop_cmd):
    
    ctrlMsgs = generMsgs(mode_mark=True,stand_mode=False,forward=0.0,left=0.0,up=0.0,pitch=0.0)
    teleop_cmd.publish(ctrlMsgs)
    print("停止运行")

def main(args=None):
    rclpy.init(args=args) 
    node = Node("motion_cmd")
    # 初始化机器人姿态@todo 导航地图加载、其他硬件初始化
    teleop_cmd = init_robot(node)
    # 执行指令
    execute_ctrl(node,teleop_cmd)
    # 保持节点运行,检测是否收到退出指令(Ctrl+C)
    try:
        # 保持节点运行,检测是否收到退出指令(Ctrl+C)
        rclpy.spin(node)
    except KeyboardInterrupt:
        node.get_logger().info("Received interrupt, stopping the robot...")
    finally:
        # 停止机器人行为
        do_stop(teleop_cmd)
        # 关闭rclpy
        rclpy.shutdown()

# 初始化机器人信息
def init_robot(node):
    node.get_logger().info("机器人正在初始化......")
    # 此处就是一个发布者,对diablo/MotionCmd
    teleop_cmd = node.create_publisher(MotionCtrl, "diablo/MotionCmd", 10)
    time.sleep(2.0)
    node.get_logger().info("初始化成功......11111")

    return teleop_cmd

# 执行调用机器人指令
def execute_ctrl(node,teleop_cmd):

    node.get_logger().info("机器人开启站立模式")

    try:
        ctrlMsgs = generMsgs(mode_mark=True,stand_mode=True)
        # publisher 发布指令
        teleop_cmd.publish(ctrlMsgs)
        time.sleep(0.2)
        ctrlMsgs = generMsgs(up=1.0,pitch=0.0)  # 上升的指令
        teleop_cmd.publish(ctrlMsgs)
        print("Message published")
    except Exception as e:
        print("Error occurred:", e)



 
    

# 组装msg,用来publish给机器人
def generMsgs(forward=None,left=None,roll=None,up=None,
                pitch=None,mode_mark=False,height_ctrl_mode = None,
                pitch_ctrl_mode = None,roll_ctrl_mode = None,stand_mode = None,
                jump_mode = False,dance_mode = None):
    # global ctrlMsgs

    ctrlMsgs = MotionCtrl()

    ctrlMsgs.mode_mark = mode_mark
    ctrlMsgs.mode.jump_mode = jump_mode

    ....

    return ctrlMsgs

此处保留一个问题是:这个用topic,并不会拿到反馈,机器人是否站立,是否成功执行等等都不知道,不知道是否会影响??

lib下面放的都是源码,有刑天机器人的源码,有激光雷达,深度相机的源码等等

刚才的控制机器人站立的话题消息的结构体

此处是一个盲区,之前都是int,float 这里的结构体一看就是自己定义的,我们需要找到这个结构体,这个结构体在那里呢? 

感觉此处,可以直接把一个文件名导入过来

虚拟遥控器

机器人有一个真实的遥控器,现在应该是要用键盘来模拟一下虚拟的遥控器,能控制上下左右前后移动,文档上面说在teleop.py中,这个也是一个node节点需要启动,这个文件在那里呢?

我们如何查看这个node节点叫什么名字呢?

去setup.py中查看一下就知道了

现在看一下,这个命令是否被佳伟哥使用过,如果使用过,那就证明自己的思路是没有问题的

搜索了一下,没有使用,可能是这个已经不需要了,因为有更加先进的控制方式了。

自己看了一下,发现原来佳伟哥的代码也是从这里面模仿的

什么是机器人的虚拟仿真环境?

暂时跳过

机器人如何驱动雷达?

现在的雷达是平面扫描,属于2D,后面准备搞3D雷达

需要找到启动雷达的命令,然后根据这个命令,就能找到雷达所在的代码,就能找到雷达

 ros2 launch ydlidar_ros2_driver ydlidar_launch.py params_file:=/opt/deploy/diablo-robot/config/params/ydlidar.yaml

在ros2上驱动激光雷达 (驱动过程中激光雷达的源代码sdk,需要安装一下)

https://github.com/YDLIDAR/ydlidar_ros2_driver

下面是

GitHub - YDLIDAR/YDLidar-SDK: Driver for receiving YD LiDAR data and more...

 安装教程:https://github.com/YDLIDAR/YDLidar-SDK/blob/master/doc/howto/how_to_build_and_install.md


 

如何用雷达建图?

如何把机器人放入地图中?如何使用Nav2导航?

地图会被保存成一个文件

launch nav2_bringup bringup_launch.py use_sim_time:=False map:=/opt/deploy/diablo-robot/config/maps/v1/01.yaml params_file:=/opt/deploy/diablo-robot/config/params/nav2_params.yam

如何进行避障?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1140789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络安全无小事】汽车网络安全:只有开局,没有尽头,聚光向前,安全到达

“ 汽车网络安全: 只有开局,没有尽头,聚光向前,安全到达。” 01 — 引言 汽车一直以来都将速度、激情、男性荷尔蒙和阳刚气息联系在一起,这种联系似乎已经成为了文化符号。然而,作为一名安全从业者,我时常担…

汽车电子 -- Bin、Hex、Srec、s19、elf等文件的区别

一、烧写文件 烧写文件有很多种格式,比如bin、Hex、s19等。下面对这几种文件格式做一下介绍。 1、bin文件 参看:【嵌入式烧录/刷写文件】-3.1-详解二进制Bin格式文件 bin是binary的缩写,翻译为“二进制”。binary file 二进制文件是一个…

idea提交代码冲突后,代码意外消失解决办法

敲了大半天的代码,解决冲突后,直接消失了当时慌的一批CCCCC 右击项目Local History ----show History 找到最近提交的内容右击选择Revert,代码全回来了

python+request接口自动化框架

目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的封装实现一定意义上的脚本与用例的脱离! robot framework 的安装不过多说明,网上资料比较太多~ 实例:!!!&#xff01…

matlab simulink PMSM永磁电机DTC控制

1、内容简介 略 10-可以交流、咨询、答疑 2、内容说明 PMSM永磁电机DTC控制 PMSM、永磁电机、DTC控制 传 是 ,它的工作原理是:首先设定好运行期望值和滞环的容差值,然后把电机 到的差值 号输出,可以 示需要减小 大输出…

​LeetCode解法汇总1465. 切割后面积最大的蛋糕

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 矩形蛋糕的…

ChatGLM系列七:LangChain+ChatGLM-6B

背景介绍 在开发过程中,我们经常会遇到需要构建基于本地知识库的问答系统的问题。这种系统需要能够根据用户提供的问题,在本地的知识库中查找并返回相关答案。然而,要实现这样的功能并不容易,涉及到语言模型的选择、知识库的管理…

OpenCV+OpenCvSharp实现图片特征向量提取与相似度计算

图片特征向量是一种用于描述图片内容的数学表示,它可以反映图片的颜色、纹理、形状等信息。图片特征向量可以用于做很多事情,比如图片检索、分类、识别等。 本文将介绍图片特征向量的提取以及相似度的计算,并使用C#来实现它们。 文章开始前&a…

论文阅读——BART

Arxiv: https://arxiv.org/abs/1910.13461 一个去噪自编码器的预训练序列到序列的模型。是一个结合了双向和自回归transformers的模型。 预训练分为两个阶段:任意噪声函数破坏文本和序列模型重建原始文本 一、模型 input:被破坏的文本-->bidirecti…

折磨的Ts

先看下官网 这里的withDefault是给props设置默认值的 由于props传入了个函数在设置默认值的时候不知道怎么设置了 解决办法:直接不设置了。也不写了。

JAVA毕业设计106—基于Java+Springboot的外卖系统(源码+数据库)

基于JavaSpringboot的外卖系统(源码数据库)106 一、系统介绍 本系统分为用户端和管理端角色 前台用户功能: 登录、菜品浏览,口味选择,加入购物车,地址管理,提交订单。 管理后台: 登录,员工管…

四、【常用的几种抠图方式三】

文章目录 钢笔工具抠图通道抠图蒙版抠图色彩范围抠图 钢笔工具抠图 钢笔工具抠图适合边缘比较硬的主体对象,因此适合需要精修而且边缘比较生硬的图片,钢笔工具操作比较多,对一般的新手来讲不是很友好,想要使用好钢笔工具需要经常…

appium操控微信小程序的坑

appium操控微信小程序的坑 打不开启动页面driver的context只有NATIVE_APP小程序上元素找不到 我打算使用appium操控微信小程序,只要能够获取到小程序的页面元素就算成功。下面都是我遇到的问题。 打不开启动页面 以下是我的appium的配置参数和代码: de…

每日一练 | 华为认证真题练习Day123

1、下面哪项参数不能用于高级访问控制列表? A. 物理接口 B. 时间范围 C. 目的端口号 D. 协议号 2、ACL不会过滤设备自身产生的访问其它设备的流量;只过滤转发的流量,转发的流量中包括其它设备访问该设备的流量。 A. 对 B. 错 3、某个AC…

python读取Excel到mysql

常见问题: 1.数据库密码有特殊字符 使用urllib.parse.quote_plus 编译密码 mysql_engine create_engine((f"mysqlpymysql://root:%s10.0.0.2:3306/mydb")%urllib.parse.quote_plus("passaaaa")) 2.设置字段类型 设置特定类型,和指…

<多线程章节五>synchrosized的可重入特性

💐专栏导读 本篇文章收录于多线程,也欢迎翻阅博主的其他文章,可能也会让你有不一样的收获😄 🍁JavaSE 🌺多线程 🍂数据结构 💐synchrosized的可重入特性及死锁 可重入特性就是&…

汉威科技光纤预警系统,守护油气长输管道“大动脉”

石油、天然气早已成为城市生活中不可或缺的能源。广大车主能快速地加上汽油,千家万户能方便地用上天然气,得益于我国庞大的石油、天然气输送基础设施网络。 我国油气分布西多东少、北多南少,要想把千里、乃至万里之外的石油、天然气输送到中部…

降本增效的集成平台

降本增效的集成平台是企业数字化转型中的关键工具之一。它能够帮助企业解决传统集成方式面临的痛点,并满足企业在数字化转型过程中的需求。下面将重点讲解企业集成的痛点及需求、传统与全域集成的对比。 企业集成的痛点及需求: 系统孤岛和信息孤岛&…

uniapp vue2、vue3 页面模板代码块设置

本文分享 uniapp vue2、vue3 页面模板代码块设置 设置路径 HBuilder X -> 工具 -> 代码块设置 -> vue代码块 -> 自定义代码块 如上图操作后在打开的 vue.json 文件的右侧“自定义代码块”中复制如下代码(可全选替换也可添加到代码中) 示…

为何开发需要更多地考虑运维便利性

在当前的软件行业中,开发和运维是两个不可或缺的环节。然而,有时候我们会发现,一些软件开发人员过于关注开发的便捷性,而忽视了运维部署的复杂性。这种做法可能会导致开发出的软件部署难度大,甚至容易出现问题。因此&a…