小车连接上代理后,会发布雷达、imu等传感器数据,可以在配套的主板中运行命令去查询这些信息,也可以发布速度、蜂鸣器等传感器的控制数据。
RISC-V小车成功开机后,需要临时关闭掉自启动程序防止冲突(详情查看《0.开机自启动和临时关闭》),打开终端输入以下指令打开代理,连接成功如下图所示,
sh ~/sh start_agent.sh
注:如果卡在前面两条log,可以按一下小车上的复位按键,这是因为第二次连代理需要重置一下。
然后输入以下指令查询该节点发布/订阅了哪些话题,
xxxxxxxxxx
ros2 node info /YB_Car_Node
可以看出订阅的话题有,
/beep:蜂鸣器控制
/cmd_vel:小车速度控制
/servo_s1:s1舵机云台控制
/servo_s2:s1舵机云台控制
发布的话题有,
/imu:imu模块数据
/odom:里程计模块数据
/scan:雷达模块数据
我们也可以通过查询话题命令,终端输入,
xxxxxxxxxx
ros2 topic list
查询雷达数据,
xxxxxxxxxx
ros2 topic echo /scan
查询imu数据,
xxxxxxxxxx
ros2 topic echo /imu
查询odom数据,
xxxxxxxxxx
ros2 topic echo /odom_raw
首先查询以下蜂鸣器话题的相关信息,终端输入,
xxxxxxxxxx
ros2 topic info /beep
得知数据类型是std_msgs/msg/UInt16。然后输入以下指令打开蜂鸣器,终端输入,
xxxxxxxxxx
ros2 topic pub /beep std_msgs/msg/UInt16 "data: 1"
输入以下指令关闭蜂鸣器,终端输入,
xxxxxxxxxx
ros2 topic pub /beep std_msgs/msg/UInt16 "data: 0"
我们假设发布小车以线速度0.5的速度,角速度0.2运动,终端输入,
xxxxxxxxxx
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.2}}"
停车则输入,
xxxxxxxxxx
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"
这里需要注意的是s1舵机的范围是[-90,90],s2舵机的范围是[-90,20],超过范围的值,舵机不转动。
我们假设控制s1舵机转动30度,则终端输入,
xxxxxxxxxx
ros2 topic pub /servo_s1 std_msgs/msg/Int32 "data: 30"
同理,控制s2舵机转动-30度则终端输入,
xxxxxxxxxx
ros2 topic pub /servo_s2 std_msgs/msg/Int32 "data: -30"