ros 双wan配置_基于ROS搭建简易软件框架实现ROV水下目标跟踪(九)--程序解析之PWM波下发...
模塊對應cabin_controllers/serial_to_mcu。模塊實現的功能為監聽網絡中PWM矩陣信息,將其轉換成十六進制數據通過串口下發至MCU,實現對推進器電機的控制。模塊數據的串口通信借助了ros的serial工具包(sudo apt-get install ros-melodic-serial),網上比較多使用方法,在此就不做介紹了。當然我還是推薦源碼安裝(鏈接)。
在demo中,實際上水下燈的控制信息亦通過串口下發至MCU,實現對燈亮度的控制。
為了方便閱讀程序,在此還是貼出實驗中自定義的電機協議。
水下燈的協議:
一、輸入輸出
監聽topic:
(1)/command/pwm,格式:cabin_msgs::PwmStamped,推進器PWM矩陣信息;
(2)/command/light_intensity,格式:std_msgs::Int64,水下燈亮度信息;
輸出:
HEX數據流。
二、端口號及baudrate的設置
nh_private也可以在serial_to_mcu.launch中隨時調整端口號及baudrate。
三、串口通信初始化設置
try{ser.setPort(serial_port_);ser.setBaudrate(baudrate_);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; }若端口號及baudrate配置正確,串口應該能正常打開。注意,程序運行前應給端口權限,否則無法通信。以demo中的測試為例,端口號為ttyUSB0,指令sudo chmod 777 /dev/ttyUSB0。
四、pwmToHex()函數
數據由十進制轉十六進制。
五、sendPWMData()函數
每收到一個PWM波矩陣信息,將其由十進制轉換成十六進制后,依據協議封裝, 下發。
ser.write(s_buffer, s_buffer_size);上述代碼段為下發一次數據。
總結
以上是生活随笔為你收集整理的ros 双wan配置_基于ROS搭建简易软件框架实现ROV水下目标跟踪(九)--程序解析之PWM波下发...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开机未发现nvidia控制面板_Wind
- 下一篇: python利用什么来写模块-Pytho