91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 6KB
    文件類型: .gz
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-06-05
  • 語(yǔ)言: 其他
  • 標(biāo)簽: ROS??

資源簡(jiǎn)介

程序版本Ubuntu16.04+kinetic 該package利用訂閱控制小海龜運(yùn)動(dòng)的cmd_vel話題,讀取鍵盤方向鍵。 然后通過(guò)串口發(fā)送控制指令到電機(jī)控制器,控制電機(jī)前進(jìn)后退轉(zhuǎn)向。 是學(xué)習(xí)ROS控制機(jī)器人運(yùn)動(dòng)的一個(gè)基礎(chǔ)例程。 使用前需安裝ros的serial工具包 sudo apt-get install ros-kinetic-serial 關(guān)于串口: 程序使用的是電腦主板自帶的9針232串口,可以根據(jù)自己具體串口調(diào)整程序 查看設(shè)備dmesg,如果使用USB轉(zhuǎn)串口一般設(shè)備號(hào)是ttyUSB0 我用的是Ubuntu16.04實(shí)際測(cè)試USB轉(zhuǎn)串口芯片ch340和PL2302都可以直接識(shí)別 可以先安裝cutecom進(jìn)行串口調(diào)試,看看是否可用,該工具是窗口界面,比較方便 安裝sudo apt-get install cutecom 安裝完成運(yùn)行要root權(quán)限才能讀取串口 sudo cutecom 程序使用的是serial_example_node1節(jié)點(diǎn),另外一個(gè)節(jié)點(diǎn)listen1沒有用到 將代碼解壓到自己的工作空間后編譯 然后啟動(dòng)serial_example_node1節(jié)點(diǎn)和turtle_teleop_key節(jié)點(diǎn) rosrun serial_msgs serial_example_node1 rosrun turtlesim turtle_teleop_key 保證當(dāng)前窗口在key讀取命令窗口,按鍵盤方向鍵,串口節(jié)點(diǎn)會(huì)收到數(shù)據(jù),并串口發(fā)送數(shù)據(jù)。 如果串口啟動(dòng)提示失敗,提示Unable to open port,可能是權(quán)限問(wèn)題需運(yùn)行命令 sudo chmod 666 /dev/ttyS0 節(jié)點(diǎn)讀取串口做了5個(gè)字節(jié)的測(cè)試 發(fā)多個(gè)字節(jié)需自己修改讀取字節(jié)數(shù)

資源截圖

代碼片段和文件信息

#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?“l(fā)isten1“);
????ros::NodeHandle?n;
????//訂閱read主題(即接受串口數(shù)據(jù))

?????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;
}

評(píng)論

共有 條評(píng)論