[无人驾驶系列] autoware与底盘CAN通讯实现
本文介绍在使用autoware时,如何将autoware发送的消息传输给底盘,实现对线控底盘的控制。
准备工作:
1、系统具备ROS和autoware
2、根据之前的教程安装好了ros_canopen
1、订阅话题
话题:/vehicle_cmd
消息类型:autoware_msgs/VehicleCmd
在这个消息类型中有很多的数据,控制线控底盘仅需取x轴方向的线速度和z轴方向的角速度。
线速度(m/s)、角速度(rad/s)
speed_ms = twist_cmd.twist.linear.x;
omega = twist_cmd.twist.angular.z;
获取线速度和角速度后计算出转弯的角度和车辆行驶速度:
steer_degree = atan((-omega/speed_ms)*1) * 180/3.14;
speed_value = (speed_ms * 3.6);
2、发布话题(发布CAN数据)
话题:/sent_messages
消息类型: firecar_can/Frame
在 std_msgs/Header header 的数据格式中,主要是给 id dlc data 赋值再发布数据,具体所需传递的 id 和 data 根据线控底盘的can协议取值。
3、canopen/Frame消息格式
Header header
uint32 id
bool is_rtr
bool is_extended
bool is_error
uint8 dlc
uint8[8] data
总结:将 autoware_msgs/VehicleCmd 消息转换为 canopen/Frame 格式最后发布,即可实现对底盘的控制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)