在windows系统如何愉快玩耍物联网智能机器人项目案例

物联网机器人使用越来越多,高校相关课程方向已经全面融入类似esp8266,esp32等用作单片机课程讲授。

中小学也在逐步普及智能硬件项目,如何将嵌入式物联网设备装载强大的智能算法,如何将其应用于机器人实现更加多元丰富的案例呢?

tianbotmini模型
tianbotmini实物

机器人操作系统必不可少!现在ROS1和ROS2安装已经非常简单快捷了,详细内容参考如下链接:

ms-iot

之前在Linux下大部分案例可以愉快方便的移植到windows系统环境下,ros官方最先支持的是turtlebot,当然tianbotmini也自然能够在windows,macos和linux下正常调试和使用的。下面以此为例简要介绍一下过程。

目前,电脑配置如下版本ROS:

ros-windows

课程讲授需要测试过的ROS第三方功能包,非核心库,核心包随ROS安装自动加载。

ros_ws

编译tianbotmini功能包

cmd配置:

C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64 && c:\opt\ros\melodic\x64\setup.bat && cd C:\ros_ws\

大力双击桌面图标打开:

双击即可进入机器人调试环境

以ROSMelodic为例界面如下:

默认路径为ros_ws

进入tianbotmini文件夹编译使用:

100%无误

配置网络:

IP

查看主机IP地址。

设置参数启动tianbotmini:

  • roslaunch tianbot_mini bringup.launch
正常启动-错误模型-无法看到报错哦

机器人无法移动,排查错误:

主题列表

未发现与机器人相关列表,为什么?为什么?为什么?

原因如下,IP不匹配:

详细参数界面

需要在此处注意,ROS_IP为 192.168.2.101 !!!修改主机IP,并重新配置。

配置修改后,重新启动
熟悉的主题列表出来了

这时候,就可以愉快遥控机器人运动了哦。

图形化速度指令发布
rviz

同时在rviz中显示也一切正常哦。

更多玩法参考其他博文,持续更新中。

本文涉及代码:

bringup.launch:

<launch>

  <!-- 迷你机器人,基础参数 -->
  <arg name="robot_name" default="tianbot_mini" />

  <!-- 迷你机器人,通信驱动 -->
  <node pkg="rosserial_server" type="socket_node" name="tianbot_mini" output="log"/>

  <!-- 迷你机器人模型 -->
  <include file="$(find tianbot_mini_description)/launch/model.launch.xml">
    <arg name="robot_name" value="$(arg robot_name)" />
  </include>

</launch>

socket_node.cpp

#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/thread.hpp>

#include <ros/ros.h>

#include "rosserial_server/tcp_server.h"


int main(int argc, char* argv[])
{
  ros::init(argc, argv, "rosserial_server_socket_node");

  int port;
  ros::param::param<int>("~port", port, 11411);

  boost::asio::io_service io_service;
  rosserial_server::TcpServer<> tcp_server(io_service, port);

  ROS_INFO_STREAM("Listening for rosserial TCP connections on port " << port);
  io_service.run();
  return 0;
}

model.launch

<launch>

  <!-- 迷你机器人,基础参数 -->
  <arg name="robot_name" default="tianbot_mini" />

  <!-- TF坐标变换,基础参数 -->
  <arg name="base_frame_id" default="$(arg robot_name)/base_link" />

  <node pkg="tf" type="static_transform_publisher" name="tbm_base_link_to_urdf_base_link" args="0 0 0 0 0 0 $(arg base_frame_id) base_link 100" />

  <arg
    name="model" />
  <arg
    name="gui"
    default="False" />
  <param
    name="robot_description"
    textfile="$(find tianbot_mini_description)/urdf/tianbot_mini_description.urdf" />
  <param
    name="use_gui"
    value="$(arg gui)" />
  <node
    name="joint_state_publisher"
    pkg="joint_state_publisher"
    type="joint_state_publisher" />
  <node
    name="robot_state_publisher"
    pkg="robot_state_publisher"
    type="robot_state_publisher" />

</launch>

-Fin-


猜你喜欢

转载自blog.csdn.net/ZhangRelay/article/details/109351962