ROS 通過C# 代碼控制小烏龜行走


 

1.通過rqt_graph指令,可以看到ROS節點之間的關系

image

從上圖中可以看到,有兩個節點/teleop_turtle 和 /turtlesim

/teleop_turtle節點發布話題,話題名為/turtle1/cmd_vel

/turtlesim訂閱了該話題

我們已知/teleop_turtle節點是控制台通過上下左右來控制小烏龜的

那我們的鍵盤,發了什么什么消息給/turtlesim節點呢

2.通過rostopic指令,進行發布話題  我們這兒查看一下/turtle1/cmd_vel

輸入rostopic pub /turtle1/cmd_vel  再按一下Tab鍵 進行補全,我們可以知道發布了什么消息結構

image

此時我們就能知道消息結構為geometry_msgs/Twist

 

3.通過rosmsg指令可以知道具體的消息結構

image

總之,我們通過修改線速度中的下x,y,z 和角速度中的x,y,z 就可以控制小烏龜運動了

image

按完回車鍵后小烏龜就能繞圈了

 

4.用C#代碼控制小烏龜,我們用到的方法是RosBridge,所以要在Ubuntu中安裝RosBridgeServer

sudo apt-get install ros-melodic-rosbridge-server
sudo apt-get install ros-melodic-rosbridge-suite 

開啟rosbridge服務

roslaunch rosbridge_server rosbridge_websocket.launch

image

開啟后端口為9090,這個要記住了,后面需要通過C#進行WebSocket通信

 

5.給ubuntu安裝dotnet5環境

sudo snap install dotnet-sdk --channel=5.0/stable --classic

image

 

6. 編寫C# 代碼,我使用的是VS2019 ,請更新到最新版,最新版支持dotnet5

   使用到WebSocketSharp 以及 西門子的RosBridgeClient

  具體源碼我已經上傳到gitee上,各位博友可以下載下來測試使用 https://gitee.com/zjwno1/ros-net5

static void Main(string[] args)
{
    try
    {
        string uri = "ws://192.168.20.132:9090";
        RosSocket RosSocket = new RosSocket(new RosSharp.RosBridgeClient.Protocols.WebSocketSharpProtocol(uri));
        string id = RosSocket.Advertise<Twist>("/turtle1/cmd_vel");
         while (true)
        {
            Twist message = new Twist();
            message.linear.x = -1;
            message.linear.y = 0;
            message.linear.z = 0;
            message.angular.x = 0;
            message.angular.y = 0;
            message.angular.z = 1;
            RosSocket.Publish(id, message);
        }
    }
    catch (Exception ex)
    {

    }
}        

  

    代碼中將不停的發布話題消息,小烏龜不停的轉圈,當然也可以根據自己的邏輯編寫其他功能

 

7.將C#項目打包成可執行文件

7.1 發布項目

image

 

image

 

image

 

image

 

image

 

image

 

7.2 保存完點擊發布按鈕

image

 

image

 

image

 

7.3 授權並運行

chmod 777 Test
./Test

image

111111


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM