資源簡介
程序版本Ubuntu16.04+kinetic
該package利用訂閱控制小海龜運動的cmd_vel話題,讀取鍵盤方向鍵。
然后通過串口發送控制指令到電機控制器,控制電機前進后退轉向。
是學習ROS控制機器人運動的一個基礎例程。
使用前需安裝ros的serial工具包
sudo apt-get install ros-kinetic-serial
關于串口:
程序使用的是電腦主板自帶的9針232串口,可以根據自己具體串口調整程序
查看設備dmesg,如果使用USB轉串口一般設備號是ttyUSB0
我用的是Ubuntu16.04實際測試USB轉串口芯片ch340和PL2302都可以直接識別
可以先安裝cutecom進行串口調試,看看是否可用,該工具是窗口界面,比較方便
安裝sudo apt-get install cutecom
安裝完成運行要root權限才能讀取串口
sudo cutecom
程序使用的是serial_example_node1節點,另外一個節點listen1沒有用到
將代碼解壓到自己的工作空間后編譯
然后啟動serial_example_node1節點和turtle_teleop_key節點
rosrun serial_msgs serial_example_node1
rosrun turtlesim turtle_teleop_key
保證當前窗口在key讀取命令窗口,按鍵盤方向鍵,串口節點會收到數據,并串口發送數據。
如果串口啟動提示失敗,提示Unable to open port,可能是權限問題需運行命令
sudo chmod 666 /dev/ttyS0
節點讀取串口做了5個字節的測試
發多個字節需自己修改讀取字節數
代碼片段和文件信息
#include?“ros/ros.h“
#include?“std_msgs/String.h“
#include?“serial_msgs/serial.h“
#include?
#include?
#define?sBUFFERSIZE?????25
unsigned?char?s_buffer[sBUFFERSIZE];
unsigned?char?r_buffer[5];
serial::Serial?ser;
void?chatterCallback(const?serial_msgs::serial::ConstPtr&?msg)
{
?????ROS_INFO_STREAM(“Writing?to?serial?port“);
????for(int?i=0;iserial.size();++i)
???????{
?????ROS_INFO(“Writing:?[0x%02x]“?msg->serial[i]);
?????s_buffer[i]=msg->serial[i];
???????}
?????ser.write(s_buffersBUFFERSIZE);
}
int?main(int?argc?char?**argv)
{
????ros::init(argc?argv?“listen1“);
????ros::NodeHandle?n;
????//訂閱read主題(即接受串口數據)
?????try
????{
????????ser.setPort(“/dev/ttyS0“);
????????ser.setBaudrate(9600);
????????serial::Timeout?to?=?serial::Timeout::simpleTimeout(1000);
????????ser.setTimeout(to);
????????ser.open();
????}
????catch?(serial::IOException&?e)
????{
????????ROS_ERROR_STREAM(“Unable?to?open?port?“);
????????return?-1;
????}
????if(ser.isOpen()){
????????ROS_INFO_STREAM(“Serial?Port?initialized“);
????}else{
????????return?-1;
????}
????ros::Subscriber?sub?=?n.subscribe(“read1“?1000?chatterCallback);
????ros::spin();
????return?0;
}
- 上一篇:另外一個更加詳細的SED1520驅動程序
- 下一篇:ACT動作游戲《武士2》源碼
評論
共有 條評論