精华内容
下载资源
问答
  • 接上篇博客:ros机器人编程实践(12.1)- 用turtlebot仿真巡线机器人 巡线设计 用自定义的图片设计gazebo的地板 首先我们需要设计一个gazebo的地板,这里感谢前辈的回答:参考问答 第一步:在home目录下ctrl+h显示...

    前言

    接上篇博客:ros机器人编程实践(12.1)- 用turtlebot仿真巡线机器人

    巡线设计

    用自定义的图片设计gazebo的地板

    首先我们需要设计一个gazebo的地板,这里感谢前辈的回答:参考问答
    第一步:在home目录下ctrl+h显示隐藏文件
    在这里插入图片描述
    第二步:在.gazebo文件夹创建如下文件夹

    mkdir ~/.gazebo/models/my_ground_plane
    
    mkdir -p ~/.gazebo/models/my_ground_plane/materials/textures 
    
    mkdir -p ~/.gazebo/models/my_ground_plane/materials/scripts
    

    第三步:创建材料文件

    cd ~/.gazebo/models/my_ground_plane/materials/scripts
    vi my_ground_plane.material
    

    my_ground_plane.material文件如下:

    material MyGroundPlane/Image
            {
              receive_shadows on
              technique
              {
                pass
                {
                  ambient 0.5 0.5 0.5 1.0
                  texture_unit
                  {
                    texture MyImage.png
                  }
                }
              }
            }
    

    第四步:在textures下存我们想要用的地板图片MyImage.png

    MyImage.png
    如图,将它放到~/.gazebo/models/my_ground_plane/materials/textures下面
    可以使用命令:

    cp 你的图片路径/MyImage.png ~/.gazebo/models/my_ground_plane/materials/textures/
    

    第五步:在my_ground_plane文件夹下,创建文件model.sdf

    cd ~/.gazebo/models/my_ground_plane
    vi model.sdf
    

    model.sdf如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <sdf version="1.4">
       <model name="my_ground_plane">
          <static>true</static>
          <link name="link">
             <collision name="collision">
                <geometry>
                   <plane>
                      <normal>0 0 1</normal>
                      <size>15 15</size>
                   </plane>
                </geometry>
                <surface>
                   <friction>
                      <ode>
                         <mu>100</mu>
                         <mu2>50</mu2>
                      </ode>
                   </friction>
                </surface>
             </collision>
             <visual name="visual">
                <cast_shadows>false</cast_shadows>
                <geometry>
                   <plane>
                      <normal>0 0 1</normal>
                      <size>15 15</size>
                   </plane>
                </geometry>
                <material>
                   <script>
                      <uri>model://my_ground_plane/materials/scripts</uri>
                      <uri>model://my_ground_plane/materials/textures/</uri>
                      <name>MyGroundPlane/Image</name>
                   </script>
                </material>
             </visual>
          </link>
       </model>
    </sdf>
    

    第六步:在my_ground_plane文件夹下,创建文件model.config,内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <model>
       <name>My Ground Plane</name>
       <version>1.0</version>
       <sdf version="1.4">model.sdf</sdf>
       <description>My textured ground plane.</description>
    </model>
    

    在gazebo中导入自己的地板模型

    打开gazebo:

    roslaunch turtlebot_gazebo turtlebot_world.launch 
    

    在另一个终端输入下面命令打开rviz:

    roslaunch turtlebot_rviz_launchers view_robot.launch --screen
    

    点击gazebo左上角的insert插入刚才建的模型:
    在这里插入图片描述
    选择My Ground Plane:
    在这里插入图片描述
    左键点击一下然后移动鼠标拖进去:
    在这里插入图片描述
    右键models列表里删除除了自己建的地板和机器人以外的其他家具:
    在这里插入图片描述
    用gazebo的移动工具,将机器人放到线上:
    在这里插入图片描述
    在这里插入图片描述
    用gazebo的旋转工具将机器人的摄像机对准黄线:
    在这里插入图片描述
    在这里插入图片描述
    旋转蓝色那条,让机器人绕z轴旋转,并对准:
    在这里插入图片描述

    写脚本控制机器人巡线

    创建ros工作区间

    mkdir -p ~/turtlebot_ws/src
    cd ~/turtlebot_ws
    catkin_init_workspace
    cd src
    catkin_create_pkg turtlebot1 rospy geometry_msgs sensor_msgs
    cd ..
    catkin_make
    source ./devel/setup.bash
    

    写过滤黄线的脚本

    这里使用hsv提取黄线
    先百度搜索黄色的hsv最大最小值:
    在这里插入图片描述
    在turtlebot1包的src下写过滤脚本follower_color_filter.py

    cd src/turtlebot1/src
    vi follower_color_filter.py
    rosrun turtlebot1 follower_color_filter.py
    

    follower_color_filter.py如下:

    #!/usr/bin/env python
    # BEGIN ALL
    import rospy, cv2, cv_bridge, numpy
    from sensor_msgs.msg import Image
    
    class Follower:
      def __init__(self):
        self.bridge = cv_bridge.CvBridge()
        cv2.namedWindow("window", 1)
        self.image_sub = rospy.Subscriber('camera/rgb/image_raw', 
                                          Image, self.image_callback)
      def image_callback(self, msg):
        # BEGIN BRIDGE
        image = self.bridge.imgmsg_to_cv2(msg)
        cv2.imshow("ori", image )
        # END BRIDGE
        # BEGIN HSV
        hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
        cv2.imshow("hsv", hsv )
        # END HSV
        # BEGIN FILTER
        lower_yellow = numpy.array([ 26,  43, 46])
        upper_yellow = numpy.array([34, 255, 255])
        mask = cv2.inRange(hsv, lower_yellow, upper_yellow)
        # END FILTER
        masked = cv2.bitwise_and(image, image, mask=mask)
        cv2.imshow("window2", mask ) 
        cv2.waitKey(3)
    
    rospy.init_node('follower')
    follower = Follower()
    rospy.spin()
    # END ALL
    

    运行效果:
    在这里插入图片描述
    可以看到very nice!!!

    写巡线脚本

    vi follower_line.py
    rosrun turtlebot1 follower_line.py
    
    #!/usr/bin/env python
    # BEGIN ALL
    import rospy, cv2, cv_bridge, numpy
    from sensor_msgs.msg import Image
    from geometry_msgs.msg import Twist
     
    class Follower:
      def __init__(self):
        self.bridge = cv_bridge.CvBridge()
        cv2.namedWindow("window", 1)
        self.image_sub = rospy.Subscriber('camera/rgb/image_raw', 
                                          Image, self.image_callback)
        self.cmd_vel_pub = rospy.Publisher('cmd_vel_mux/input/teleop',
                                           Twist, queue_size=1)
        self.twist = Twist()
      def image_callback(self, msg):
        image = self.bridge.imgmsg_to_cv2(msg,desired_encoding='bgr8')
        hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
        lower_yellow = numpy.array([ 26,  43, 46])
        upper_yellow = numpy.array([34, 255, 255])
        mask = cv2.inRange(hsv, lower_yellow, upper_yellow)
         
        h, w, d = image.shape
        search_top = 3*h/4
        search_bot = 3*h/4 + 20
        mask[0:search_top, 0:w] = 0
        mask[search_bot:h, 0:w] = 0
        M = cv2.moments(mask)
        if M['m00'] > 0:
          cx = int(M['m10']/M['m00'])
          cy = int(M['m01']/M['m00'])
          cv2.circle(image, (cx, cy), 20, (0,0,255), -1)
          # BEGIN CONTROL
          err = cx - w/2
          self.twist.linear.x = 0.2
          self.twist.angular.z = -float(err) / 100
          self.cmd_vel_pub.publish(self.twist)
          # END CONTROL
        cv2.imshow("window", image)
        cv2.waitKey(3)
     
    rospy.init_node('follower')
    follower = Follower()
    rospy.spin()
    # END ALL
    
    

    运行脚本:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    总结

    挺好玩的吧,可以仿真下巡线的算法哈哈哈哈,做过智能车的小伙伴应该不陌生哦~
    enjoy it~

    展开全文
  • **第3章机器人场景图形规划**机器人感受训练课程3:不要命令机器人去执行一个你想象不出它会怎样执行...制作你想要机器人去执行的场景和指令的图片或“图形表示”,将会是确保机器人恰当执行任务的最佳方式。机器人...

    **第3章
    机器人场景图形规划**
    机器人感受训练课程3:不要命令机器人去执行一个你想象不出它会怎样执行的任务。
    正如第2章所描述的,机器人词汇是在一个特定态势或场景下给机器人指派任务的语言。一旦建立了一个词汇,接下来就是列出机器人利用这些词汇去执行任务的指令。
    制作你想要机器人去执行的场景和指令的图片或“图形表示”,将会是确保机器人恰当执行任务的最佳方式。机器人将要执行指令的图会提示你将它们转换为代码之前先考虑好各个步骤。图形可以帮助你理解这个过程,研究图形可以通过看到待办事项来改善开发,而阐明该图形可能会提出另外一个问题。我们称之为机器人场景图形规划(Robot Scenario Visual Planning,RSVP)。RSVP是一个图形,它有助于你制定机器人的指令规划,由3类图像构成,即:
    场景实体环境的平面图
    机器人和目标状态的状态图
    任务指令的流程图
    对于编程一个机器人去执行拯救世界的伟大壮举还是在蛋糕上点燃蜡烛,这些图形确保你对必须做什么有一个“清晰的画面”。RSVP可以用于任意组合。有些情况下,流程图可能比状态图更有用。对于其他情况,状态图是最好用的。我们的建议是,不论使用状态图还是流程图,都需要一个平面图或规划图。
    俗话说“千言不如一画”,意思就是和大量描述性文字相比一个简单的图形可以传递十分复杂的想法。我们从小学阶段就伴随这一观念长大,尤其当我们试图求解应用题时;画一幅关于应用题主要想法的图画之后,如何解决它神奇地变得清晰起来。这个观念现在仍然有用。在这种情况下,画一幅环境、状态图和流程图的画不仅胜过千言,甚至胜过一千条指令。开发一个RSVP可以让你规划场景中的机器人导航。针对各种态势中的任务制定出指令步骤,以避免直接写代码的尝试和错误。

    展开全文
  • 读入数据总结新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义...
    
    
    


    前言

    工业机器人是面向工业领域的多关节机械手或多自由度的机器装置,它能自动执行工作,是靠自身动力和控制能力来实现各种功能的一种机器。下面是关于工业机器人发展、分类的介绍,并介绍ABB工业机器人。


    一、工业机器人的发展

    现代机器人的研究始于20世纪中期,其技术背景是计算机和自动化的发展,以及原子能的开发利用(为了代替人处理放射性物质而开发遥控机械手)。

    1954年

    美国戴沃尔最早提出了工业机器人概念,并申请了专利。

    1962年

    美国AMF公司和UNIMATION公司分别推出实用型(示教再现)工业机器人“VERSTRAN”和“UNIMATE”。

    1965年

    美国MIT(麻省理工学院)研究出了第一个具有视觉传感器的、能识别与定位简单积木的机器人系统。

    1967年

    日本成立了人工手研究会(现为仿生机构研究会),同年召开日本首届机器人学术会。

    1970年

    美国召开第一届国际工业机器人学术会议。在此之后,机器人的研究得到广泛普及。

    1973年

    美国CINCINNATI MILACRON公司制造了第一台由小型计算机控制的工业机器人。

    1980年

    工业机器人在日本真正普及,该年被称为“机器人元年”。

    二、工业机器人的分类

    1、按臀部运动形式分类

    (1)直角坐标型

    臀部可沿三个直角坐标移动。
    特点及应用:精度高,速度快,控制简单,易于模块化,但动作灵活性较差,主要用于搬运、上下料、码垛等领域。

    (2)圆柱坐标型

    臀部可作升降、回转和伸缩动作。
    特点及应用:精度高、有较大的动作范围,坐标计算简单,结构轻便,响应速度快,但是负载较小,主要用于电子、分拣等领域。

    (3)球坐标型

    臀部能回转、俯仰和收缩。

    (4)关节型

    臀部有多个转动关节。

    2、按执行机构运动的控制机能分类

    (1)点位型

    只控制执行机构由一点到另一点的准确定位。
    应用:适用于机床上下料、点焊和一般搬运、装卸等作业。

    (2)连续轨迹型

    控制执行机构按给定轨迹运动。
    应用:适用于连续焊接和涂装等作业。

    2.按程序输入方式分类

    (1)编程输入型

    将计算机上已经编好的作业程序文件,通过RS232串口或者以太网等通信方式传送到机器人控制柜。

    (2)示教输入型

    有示教方法,一是使用示教操纵盒,将指令信号传给驱动系统;二是由操作者直接领动执行机构,按要求动作顺序和运动轨迹操演一遍。

    三、ABB工业机器人介绍

    ABB由瑞典的阿西亚公司(ASEA)和瑞士的布朗勃法瑞公司(BBC Brown Boveri)在1988年合并而成,是全球500强企业之一,总部位于瑞士苏黎世。ABB工业机器人广泛应用在汽车工业、包装与堆垛自动化、电气电子工业(3C)、木材工业、太阳能与光伏工业、塑料工业、铸造锻造自动化、金属加工自动化等行业中。
    *3C:计算机类、通信类和消费类电子产品三者的统称

    1、IRB型机器人

    IRB型机器人是ABB公司生产的ABB标准系列机器人。常用于焊接、涂刷、搬运与切割。常用型号有:IRB 1400,IRB 2400,IRB 4400,IRB 6400
    其型号解释:
    IRB指ABB机器人。
    第一位数(1,2,4,6)指机器人的大小。
    第二位数(4)指属于S4或S4C系统。
    无论何种型号,机器人控制部分基本相同。

    IRB机器人
    IRB 1400 承重较小,最大承重为5Kg,常用于焊接。
    IRB 2400 承重较小,最大承重为7Kg,常用于焊接。
    IRB 4400 承重较大,最大承重为60Kg,常用于搬运或大范围焊接
    IRB 6400 承重较大,最大承重为200Kg,常用于搬运或大范围焊接

    2、ABB机器人组成

    ABB机器人由两部分组成:机械手和控制器。
    操作人员通过控制器操作机械手。机械手是由六个转轴组成的空间6杆开链机构,理论上可以达到运动范围内的任何一点。

    每个转轴均带有一个齿轮箱,机械手运动精度可达到±0.05mm~±0.2mm。六个转轴均带有AC伺服电机驱动。

    机械手带有一块串口测量板(SMB),它将编码器模拟量转换为数字量,并依靠六节可充电镍镉电池供电,机器人关机时,通过电池存储机器人当前编码器位置,一旦电池电量不足需要及时更换。

    3、ABB机器人控制系统

    ABB机器人控制器系统主要组成:主计算机板、机器人计算机板、快速硬盘、网络通信计算机、示教器、驱动单元、通信单元和电力板。
    变压器、主计算机、轴计算机、驱动板、串口测量和编码器组成伺服驱动系统,对位置、速度和电机电流进行数字化调整,对电机控制进行同步。

    4、编程语言

    在ABB公司20多个型号中,都采用了通用模块化语言RAPID。RAPID是目前ABB、IWK等国际一流机械手公司生产气压型工业机械手控制软件编程语言,它类似于VB等高级语言。

    1、RAPID

    (1)例行程序

    RAPID有三种类型的例行程序(子程序):
    进程:没有返回值,只用来构成指令内容。
    函数:返回某一类型的数据值,还可以用作指令参数。
    中断程序:提供了一种中断反应,它与某个具体的中断联系起来,一旦中断产生,它就会自动执行。

    (2)指令

    RAPID共有276条指令:
    1、信号输入输出指令
    DO:机器人的数字输出信号。
    DI:机器人的数字输入信号。
    2、运动指令
    机器人有四种最基本的运动:圆周运动MoveC、直线运动MoveL、绝对运动MoveAbsj和关节运动MoveJ。
    例:MoveC p1,p2,v500,z30,tool2; //tool2的TCP以速度v500、区域z30为参数作圆周运动到p2点,圆周的半径由起始点p1、p2点共同确定。

    例:MoveC p1,p2,v500,z30,tool2;
     //tool2的TCP以速度v500、区域z30为参数作圆周运动到p2点,圆周的半径由起始点p1、p2点共同确定。
    
    例:MoveL p1,v1000,z30,tool1;
     //tool1的TCP以速度v1000、区域z30为参数作直线运动到p1点。
    
    例:MoveAbsj p1,v500,z30,tool2;
     //tool2的TCP以速度v500、区域z30为参数,经非线性路径运动到指定点p1。
    

    MoveAbsj 指令是直接给各跟转轴下达命令,因此可以到达其他运动方式不能到达的起点处。

    例:MoveJ p1,vmax,z30,tool2;
     //tool2的TCP以最高速度、区域z30为参数,经曲线路径快速运动到指定点p1。
    

    使用MoveJ指令时,所有轴同时到达目标位置。
    3、读写指令
    Open:打开用于读写的文件或串行通道。
    Write:用于写到基于字符的文件或串行通道。
    WriteAnyBin:用于将任意类型的数据写入到二进制串行通道或文件中。
    WriteBin:用于将一定字节的数据写入到二进制串行通道中。
    WriteStrBin:用于将字符串写入到二进制串行通道或二进制文件中。
    ReadAnyBin:用于从二进制串行通道或文件中读取任何类型的数据。
    TPReadNum:用于读取示教器按下的一个数字。
    TPWrite:用于向示教器输出文字或是某种类型的值。

    四、安装与日常维护

    1、工业机器人安装

    工业机器人的安装可分为机器人控制柜的安装,机器人本体的安装,机器人各接口连接、机器人本体与控制柜的连接及机器人主电源的连接、示教器连接。

    2、工业机器人日常维护

    在正常运行1年后,工业机器人需要进行1次预防性保养,更换齿轮润滑油。工业机器人正常运行每3年或10000小时后,必须再进行1次预防保养,特别是针对在恶劣工况与长时间在负载极限或运行极限下工作的机器人,需要每年进行一次全面预防性保养。

    展开全文
  • 在网络上,沟通交流的方式主要有文字、图片和视频。对于专业人士,通常是公式和代码。 在表述一个数学或物理规律所用字节或占用空间由小到大: 公式 文字 图片 视频 理解难度由简单到困难,如下: 视频 图片 ...

    在网络上,沟通交流的方式主要有文字、图片和视频。对于专业人士,通常是公式和代码。

    在表述一个数学或物理规律所用字节或占用空间由小到大:

    1. 公式
    2. 文字
    3. 图片
    4. 视频

    理解难度由简单到困难,如下:

    1. 视频
    2. 图片
    3. 文字
    4. 公式

    果然,鱼与熊掌不可兼得。

    旅程开启

    那么如何构建一个简单的局域网聊天工具呢?

    这里只给出最简陋版本的。

    复习一下节点:

    • ros2 node list

    猜一下,主题列表命令如下:

    • ros2 topic list

    那么公司的每位小伙伴都要订阅这个主题,随时查看是否需要开会(恩……开会挺**********,此处省略)

    • ros2 topic pub /meeting -1 std_msgs/msg/String data:\ "下午1:30分,996福报会议室开短会"

    window终端也一样:

    当然也完全支持图片、视频等格式,并且可以用图形化界面哦,来看一下吧:

    在线的员工,如下图所示:

    当然也可以给每个员工一个正式工号,留作思考题。

    此外,信息也可以加密,未获授权的电脑无法观看,参考:

    公司或者实验室内部各成员之间交流通知,采用这种方式就不需要xx了,充分保护隐私哦。

    如果做成图形化界面,就是聊天工具。更多内容,后续补充。现在回归本节内容:

    • 信息交互(主题)

    基本概念

    在机器人操作系统中,将复杂的系统拆解为许多模块(松耦合)。主题是一个ROS图中的虚拟元素,用于展示节点之间消息传输。

    一对一:

    多对多:

    到这里,节点和主题的概念,都已经清晰了。

    更多内容参考:ROS 2主题-topics-

    配置

    下面,开启图形化示例(会议主题保留):

    1. ros2 run turtlesim turtlesim_node
    2. ros2 run turtlesim turtle_teleop_key

    rqt_graph

    使用rqt_graph,可以清晰可视化节点和主题的动态,当然也包括它们的连接情况。

    消息流向由箭头表示:

    关于主题的全部命令如下:

    usage: ros2 topic [-h] [--include-hidden-topics] Call `ros2 topic <command> -h` for more detailed usage. ...
    
    Various topic related sub-commands
    
    optional arguments:
      -h, --help            show this help message and exit
      --include-hidden-topics
                            Consider hidden topics as well
    
    Commands:
      bw     Display bandwidth used by topic
      delay  Display delay of topic from timestamp in header
      echo   Output messages from a topic
      find   Output a list of available topics of a given type
      hz     Print the average publishing rate to screen
      info   Print information about a topic
      list   Output a list of available topics
      pub    Publish a message to a topic
      type   Print a topic's type
    
      Call `ros2 topic <command> -h` for more detailed usage.
    

    演示一些内容如下:

    • ros2 topic list

    主题列表

    主题列表中传递的消息类型:

    • ros2 topic list -t

    在图形化rqt_graph中,要显示所有主题,注意hide!

    消息可以传输各类信息,类似编程语言中的各种变量。后续讲解。

    主题消息显示

    格式如下:

    • ros2 topic echo <topic_name>

    案例如下:

    • ros2 topic echo /turtle1/cmd_vel

    默认不会有任何反应,如非遥控键盘。

    此时,查看:

     echo对应n____ros2cli_8418

    主题信息

    主题支持一对一、一对多、多对一、多对多。

    分别查看meeting和/turtle1/cmd_vel。

    • ros2 topic info /turtle1/cmd_vel

    主题消息接口类型

    必须用规范的消息相互通信。

    geometry_msgs/msg/Twist

    使用如下命令查看:

    • ros2 interface show geometry_msgs/msg/Twist

    对应具体实现:

    主题发布

    命令格式:

    • ros2 topic pub <topic_name> <msg_type> '<args>'

    以二维机器人速度发布为例:

    • ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"

    注意参数的含义:

    1. --once    发布一次
    2. --rate 1    以1Hz频率发布

    命令要多尝试,才能掌握。

    主题消息频率

    ros2 topic hz

    具体案例,机器人位置姿态发布的频率?

    • ros2 topic hz /turtle1/pose

    退出

    • Ctrl+C

    总结

    节点通过主题发布信息,允许任意数量的其他节点订阅和访问此信息。在本实践中,使用rqt_graph和命令行工具查看了主题上多个节点之间的连接。现在应该对ROS2系统中数据的流动(通信)有了一个很好的理解。

    附录

    频率如何修改?

      pose_pub_ = nh_->create_publisher<turtlesim::msg::Pose>(real_name + "/pose", qos);
      auto p = std::make_unique<turtlesim::msg::Pose>();
      p->x = pos_.x();
      p->y = canvas_height - pos_.y();
      p->theta = orient_;
      p->linear_velocity = std::sqrt(lin_vel_x_ * lin_vel_x_ + lin_vel_y_ * lin_vel_y_);
      p->angular_velocity = ang_vel_;
      pose_pub_->publish(std::move(p));

    会议演示代码?

    #include <iostream>
    #include <memory>
    
    #include "rclcpp/rclcpp.hpp"
    #include "std_msgs/msg/string.hpp"
    
    class MinimalSubscriber : public rclcpp::Node
    {
    public:
      MinimalSubscriber()
      : Node("meeting")
      {
    //    subscription_ = this->create_subscription<std_msgs::msg::String>(
    //     "meeting",
    //      10,
    //      [this](std_msgs::msg::String::UniquePtr msg) {
    //        RCLCPP_INFO(this->get_logger(), "I heard: '%s'", msg->data.c_str());
    //      });
     subscription_ = this->create_subscription<std_msgs::msg::String>(
         "meeting", 10, [this](std_msgs::msg::String::UniquePtr msg) {
            RCLCPP_INFO(this->get_logger(), msg->data.c_str());
            });
      }
    
    private:
      rclcpp::Subscription<std_msgs::msg::String>::SharedPtr subscription_;
    };
    
    int main(int argc, char * argv[])
    {
      rclcpp::init(argc, argv);
      rclcpp::spin(std::make_shared<MinimalSubscriber>());
      rclcpp::shutdown();
      return 0;
    }

    展开全文
  • 机器人教育图片

    2021-01-28 13:30:23
    本课程教学围绕知识与技能、过程与方法、情感态度与价值观三维目标...在制作机器人的过程中体验物理学中齿轮、杠杆等机械工作原理,为学习物理知识打下基础,掌握传感器的使用方法,学会模块编程语言,通过编程控制培
  • [图片说明](https://img-ask.csdn.net/upload/201905/30/1559230892_767964.png) ![图片说明](https://img-ask.csdn.net/upload/201905/30/1559231036_433262.png) 但是自己手动分明可以找到啊
  • 文章目录1. 安装和使用2.使用PS提取图像轮廓:3.雕刻文字案例4.雕刻图像案列 ...根据图片绘制轮廓,网址链接:https://www.youtube.com/watch?v=Qftdv8AU0Sg 网址链接:https://www.youtube.com/w
  • python将自己微信号编程机器人代码

    万次阅读 2017-10-12 10:53:37
    最近闲着没事,在网上查询了些资料,自己用Python捣鼓了个微信机器人玩玩,贴下代码做个笔记 创建weizin_robot.py文件,pip install itchat 在文件中写入以下代码,运行,扫描二维码登录,用其它微信好给自己发消息...
  • 2017年7月,国务院印发了《新一代人工智能发展规划》,提到要在中小学阶段设置人工智能相关课程,逐步推广编程课程,并为一些机器人竞赛加入了应试加分机制。 2018年11月,全国首套涵盖了从小学到高中的人工智能...
  • 使用JavaScript和WebGL编写的KAREL 3D是一种用于教学算法的儿童编程语言。 这是后来的3D机器人Karel的变体,该机器人于1986年为8位微型计算机PMD 85-2创建。 支持完全递归,创建新命令,带有对话框条件的复杂命令...
  • 上一节: <<用Python将你的女朋友,藏在图片里(附代码)>> 不知道你们女朋友,上节课有没有收到你们的图片,大吃一惊、给你个大大...顺便按照里面的要求,去申请一个机器人,获得apikey。 <<【...
  • 四自由度机器人手臂遥控装置硬件采用Arduino uno单片机主板加扩展板,参见附件图片资料。四自由度机器人手臂采用了四个MG996大功率舵机。但Arduino uno单片机直接带不动四个MG996大功率舵机,一般解决的办法是加舵机...
  • 晨风机器人配置

    2018-02-15 23:35:40
    查询功能,而晨风qq机器人是由一个个单独的qq号充当的,需要在用户的电脑里运行机器人软件,它使用的也是腾讯qq的通讯协议,这个软件本身类似于qq软件的电脑客户端,可以跟qq群里的群友或qq好友进行对话或收发图片、...
  • 在线跟随机器人-源码

    2021-02-13 11:06:16
    为了使机器人停止,我们可以对其进行编程,如果两个传感器都看到黑色,则它将停止。 将电气胶带垂直于路径的末端。 它将使用哪些组件? Arduino,光传感器,面包板,车轮,伺服系统。 此解决方案如何解决问题? ...
  • 该六足机器人可以通过XBee模块或者蓝牙模块进行远程控制,同时可以根据处理API学习基本的编程知识,总之该设计是一个可扩展的机器人平台。 该六足机器采用ATMEGA1284-A为主控制芯片,采用3自由度腿,通过PWM可以直接...
  • 中文编程,最精致的python访客登记系统实例项目,微信机器人不再只当人工智障------05 - 浩海泛舟的文章 - 知乎 https://zhuanlan.zhihu.com/p/51276692 泛舟上一篇画了一幅看着头晕的流程图以后,一夜思考.好吧,其实...
  • 2聊天机器人需求分析

    2021-02-20 00:16:08
    需求分析和流程介绍 目标 能够说出实现聊天机器人的需求 能够说出实现聊天机器人的流程 ...[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c2vscfCd-1613751361139)(…\images\2.1\a
  • 通过机器人示教盒改变摄像机的位置,用左右摄像机各采集不同位置的靶标图片,采用OpenCV编程,求得摄像机的内外部参数,再用Matlab完成了机器人手眼标定。借助机器人示教盒显示的数据,检测了摄像机标定精度。结果表明,...
  • SZE学术机器人项目 该存储库包含由位于匈牙利杰尔的塞切尼·伊斯特万大学(SZE)开发的各种项目。 1. V-REP MATLAB互操作演示 名称: VrepMatlabInteroperation Description(说明) :该项目的目的是演示MATLAB中...
  • BurstBot电报 电报机器人爆炸计算机 开始 :rocket: 直接链接到 机器人做什么? :clipboard: 主要功能是: 迎接新用户。 通过交互式菜单回答... 通过面向对象的编程环境促进与Telegram API交互的库 托管跨平台项目
  • 使用discord.js在node.js中进行编程,并非常了解我在做什么,这确实很有趣,我想拥有并获得新的体验。 命令:帮助:为您提供所有命令的完整列表头像:为您提供指向头像/个人资料图片的链接您好:“嗨”邀请:为...
  • 四自由度机器人手臂遥控装置硬件采用Arduino uno单片机主板加扩展板,参见附件图片资料。四自由度机器人手臂采用了四个MG996大功率舵机。但Arduino uno单片机直接带不动四个MG996大功率舵机,一般解决的办法是加舵机...
  • 主要包括机器人空间的位姿变换以及C++编程实现 说明:本文章中的大部分图片来自南开大学-人工智能学院的《机器人学导论》课件 空间的描述 1. 位置的描述(仅笛卡尔坐标系) 在一个笛卡尔坐标系 (Cartesian ...
  • 四自由度机器人手臂遥控装置硬件采用Arduino uno单片机主板加扩展板,参见附件图片资料。四自由度机器人手臂采用了四个MG996大功率舵机。但Arduino uno单片机直接带不动四个MG996大功率舵机,一般解决的办法是加舵机...
  • 带传送链的机器人输运工作站仿真效果演示在这里插入图片描述一、工作任务:二、任务描述:三、任务实施创建机器人工作站仿真环境创建机器人工作单元Workcell的仿真环境工作站布局添加爪手添加fixture与part添加传送...
  • 机器人自动转发群消息到其他群(支持分组、开关、系统表情、图片) 消息防火墙 掉线自动上线 记住上次登录QQ帐号、密码 启动自动登录QQ机器人 显示机器人等级、个性签名、群主页链接 除支持Web接口(网站接口)外,...
  • 里面充斥着愚蠢的图片和内在的笑话。 特征 这是一个非常怪异的机器人,但实际上具有一些不错的功能: 模块化Discord Cog设计,可轻松添加/删除功能并简化调试 Oohwee核心课程-基本命令 基本的Discord侦听器,例如...
  • 免责声明-这个Discord机器人项目最初是一个用于学习JavaScript和编程的项目,因此请警惕可疑的代码。 将来可能会进行重构。 重要功能列表 Tiktok嵌入 自定义命令 星座运势 特定城市的天气和时间 聊天和“赞美”排行...

空空如也

空空如也

1 2 3 4 5 6
收藏数 109
精华内容 43
关键字:

机器人编程图片