Python构建ROS发布地图节点 咱们开始第一步。在终端里,创建软件包 map_pkg。依赖项里加上 nav_msgs。这就创建好了。然后 catkin_make 编译一下,让软件包进入 ROS 的包列表。 来到 VSCode,打开 map_pkg,为其新建一个文件夹,名字叫 scripts。在这个文件夹里创建节点代码文件。map_pub_node.py。 开始编写代码,第一行是 Shebang,如果是 Ubuntu 18.04 及之前的版本,选择 python 解释器。而这里是 Ubuntu 20.04,所以选择 python3 的解释器。第二行,指定运行环境的编码为 utf-8,让中文字符能正常显示。先引入 rospy 和 地图消息类型。然后是 main 主函数。初始化节点。发布话题 /map。消息包发送频率设置为 1 Hz。使用 while 循环,不停发送消息包。构建地图消息包 msg 。然后开始消息包的赋值。先是 header,坐标系 ID 设置为 map。时间戳设置为当前时间。然后是地图描述信息。地图原点的 x y 偏移量都设置为 0。分辨率是 1.0 表示栅格地图的单元格边长为 1 米。地图的宽度为 4 个单元格。高度为 2 个单元格。 接下来是地图数据的赋值,先调整数组大小。数组初始值为 0,长度为 宽度 × 高度。接下来是栅格赋值过程。 将赋值好的消息包发送出去。最后是发送频率的控制。好,节点代码完成了,Ctrl + S 保存。#Python #ROS #机器人编程 #robot #机器人工匠阿杰
00:00 / 01:30
连播
清屏
智能
倍速
点赞46
00:00 / 02:13
连播
清屏
智能
倍速
点赞6
如何完成机器人运动控制程序? 打开一个终端,创建软件包,名称是vel_pkg,依赖项是roscpp、rospy和geometry_msgs,这个geometry_msgs是包含了速度消息类型的软件包。回车,好,这就创建好了。 来到vscode,进行第二步,在刚才创建的vel_pkg的src文件夹里创建一个节点代码文件,名字叫vel_node.cpp。来到右边编写这个节点的代码,先include ROS的头文件,然后是速度消息类型的头文件geometry_msgs的Twist。构建main主函数,记得去掉这个const。主函数里按照惯例,先初始化节点。然后召唤大管家NodeHandle,给他一个昵称,叫做n。下面可以进行第三步,让大管家帮忙发布一个话题,并把发送对象交到咱手里,一会还用得着。先定义一个发布对象ros::Publisher,名字叫vel_pub。这个发布对象从哪来,让大管家,advertise发布一个话题,类型为geometry_msgs的Twist。话题名称是cmd_vel。好,这样发布对象就有了,还缺个消息包。声明一个Twist类型的消息包,名字叫vel_msg,接着可以给这个消息包进行速度的赋值。还记得Twist的定义吗?它包含了linear矢量速度和angular旋转速度。我们要让机器人往前直行的话,应该给这个linear赋值。再回忆一下linear的坐标轴定义,机器人向前移动,速度方向就是X轴的正方向,x符号为正。安全起见先给个小一点的数值,0.1。也就是以0.1米每秒的速度向前移动。好,其他速度分量全部置零。 现在话题和消息包都有,咱们进入最后一步,开启while循环,疯狂刷屏发送消息。先定义一个Rate对象,用来控制while循环的频率,参数30,表示一秒钟循环30次。然后是while循环函数,在循环内部我们啥也不干,就只做publish,发布消息这一个操作。然后调用一下频率对象的sleep函数控制while循环频率。 好,到这里,整个程序就完成了。#ROS #机器人运动控制 #机器人 #robot #机器人工匠阿杰
00:00 / 01:33
连播
清屏
智能
倍速
点赞17
00:00 / 01:30
连播
清屏
智能
倍速
点赞5
00:00 / 01:48
连播
清屏
智能
倍速
点赞10
00:00 / 01:07
连播
清屏
智能
倍速
点赞1