当前位置: 首页 > news >正文

可以做ppt的软件seo推广任务小结

可以做ppt的软件,seo推广任务小结,家装设计师接单平台,公司做二手网站的用意功能说明 使用键盘按键,可以控制franka机械臂7个关节角,已在真机上验证。 代码 主要使用的是官方包内的 franka_example_controllers 1、修改 include下的 joint_position_example_controller.h, 改为如下: // Copyright (c) 2017 Frank…

功能说明

使用键盘按键,可以控制franka机械臂7个关节角,已在真机上验证。

代码

主要使用的是官方包内的 franka_example_controllers

1、修改 include下的 joint_position_example_controller.h, 改为如下:

// Copyright (c) 2017 Franka Emika GmbH
// Use of this source code is governed by the Apache-2.0 license, see LICENSE
//  技术交流/服务 v: L2622452304
#pragma once#include <array>
#include <string>
#include <vector>#include <controller_interface/multi_interface_controller.h>
#include <hardware_interface/joint_command_interface.h>
#include <hardware_interface/robot_hw.h>
#include <ros/node_handle.h>
#include <ros/time.h>
#include <ros/ros.h>
#include <std_msgs/Float32MultiArray.h>namespace franka_example_controllers {class JointPositionExampleController : public controller_interface::MultiInterfaceController<hardware_interface::PositionJointInterface> {public:ros::NodeHandle n;bool init(hardware_interface::RobotHW* robot_hardware, ros::NodeHandle& node_handle) override;void joint_command_callback(const std_msgs::Float32MultiArray &msg);void starting(const ros::Time&) override;void update(const ros::Time&, const ros::Duration& period) override;std::array<float, 7> joints_position_change = {0.0,0.0,0.0,0.0,0.0,0.0,0.0};private:hardware_interface::PositionJointInterface* position_joint_interface_;std::vector<hardware_interface::JointHandle> position_joint_handles_;ros::Duration elapsed_time_;std::array<double, 7> initial_pose_{};};}  // namespace franka_example_controllers

2、修改 src下的 joint_position_example_controller.cpp, 改为如下:

// Copyright (c) 2017 Franka Emika GmbH
// Use of this source code is governed by the Apache-2.0 license, see LICENSE
#include <franka_example_controllers/joint_position_example_controller.h>#include <cmath>#include <controller_interface/controller_base.h>
#include <hardware_interface/hardware_interface.h>
#include <hardware_interface/joint_command_interface.h>
#include <pluginlib/class_list_macros.h>
// #include <ros/ros.h>namespace franka_example_controllers {bool JointPositionExampleController::init(hardware_interface::RobotHW* robot_hardware,ros::NodeHandle& node_handle) {n = node_handle;position_joint_interface_ = robot_hardware->get<hardware_interface::PositionJointInterface>();if (position_joint_interface_ == nullptr) {ROS_ERROR("JointPositionExampleController: Error getting position joint interface from hardware!");return false;}std::vector<std::string> joint_names;if (!node_handle.getParam("joint_names", joint_names)) {ROS_ERROR("JointPositionExampleController: Could not parse joint names");}if (joint_names.size() != 7) {ROS_ERROR_STREAM("JointPositionExampleController: Wrong number of joint names, got "<< joint_names.size() << " instead of 7 names!");return false;}position_joint_handles_.resize(7);for (size_t i = 0; i < 7; ++i) {try {position_joint_handles_[i] = position_joint_interface_->getHandle(joint_names[i]);} catch (const hardware_interface::HardwareInterfaceException& e) {ROS_ERROR_STREAM("JointPositionExampleController: Exception getting joint handles: " << e.what());return false;}}std::array<double, 7> q_start{{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};for (size_t i = 0; i < q_start.size(); i++) {if (std::abs(position_joint_handles_[i].getPosition() - q_start[i]) > 0.1) {ROS_ERROR_STREAM("JointPositionExampleController: Robot is not in the expected starting position for ""running this example. Run `roslaunch franka_example_controllers move_to_start.launch ""robot_ip:=<robot-ip> load_gripper:=<has-attached-gripper>` first.");return false;}}return true;
}void JointPositionExampleController::joint_command_callback(const std_msgs::Float32MultiArray &msg){for (size_t i = 0; i < 7; ++i) {joints_position_change[i] = msg.data[0];}
}void JointPositionExampleController::starting(const ros::Time& /* time */) {// for (size_t i = 0; i < 7; ++i) {//   initial_pose_[i] = position_joint_handles_[i].getPosition();// }// elapsed_time_ = ros::Duration(0.0);// ros::init("keyboard_subscriber");ros::Subscriber joint_sub = n.subscribe("/keyboard", 1, &JointPositionExampleController::joint_command_callback,this);ros::spin();
}void JointPositionExampleController::update(const ros::Time& /*time*/,const ros::Duration& period) {// elapsed_time_ += period;// double delta_angle = M_PI / 16 * (1 - std::cos(M_PI / 5.0 * elapsed_time_.toSec())) * 0.2;// for (size_t i = 0; i < 7; ++i) {//   if (i == 4) {//     position_joint_handles_[i].setCommand(initial_pose_[i] - delta_angle);//   } else {//     position_joint_handles_[i].setCommand(initial_pose_[i] + delta_angle);//   }// }for (size_t i = 0; i < 7; ++i) {initial_pose_[i] = position_joint_handles_[i].getPosition();}for (size_t i = 0; i < 7; ++i) {position_joint_handles_[i].setCommand(initial_pose_[i] + joints_position_change[i]);joints_position_change[i] = 0.0;}
}}  // namespace franka_example_controllersPLUGINLIB_EXPORT_CLASS(franka_example_controllers::JointPositionExampleController,controller_interface::ControllerBase)

3、在package下新建scripts文件夹,新建 joint_position_keyboard.py 程序,如下:

#! /usr/bin/env python
#  技术交流 /服务v: L2622452304
import rospy
from std_msgs.msg import Float32MultiArray
import sys, select, termios, tty
from threading import Threadjoints_change = {'1':(0,0.01),'q':(0,-0.01),'2':(1,0.01),'w':(1,-0.01),'3':(2,0.01),'e':(2,-0.01),'4':(3, 0.01),'r':(3,-0.01),'5':(4, 0.01),'t':(4,-0.01),'6':(5, 0.01),'y':(5,-0.01),'7':(6, 0.01),'u':(6,-0.01),}
key = ''
rospy.init_node('keyboard_pub')
pub = rospy.Publisher('/keyboard', Float32MultiArray, queue_size=1)def getKey():global keytty.setraw(sys.stdin.fileno())rlist, _, _ = select.select([sys.stdin], [], [], 0.1)if rlist:key = sys.stdin.read(1)if key == 'z':print('Stop')exit(0)else:key = ''termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)def pub_command():global keyglobal pubkeyboard_command = Float32MultiArray()rate = rospy.Rate(100)while True:joints = [0.0,0.0,0.0,0.0,0.0,0.0,0.0]if key in joints_change.keys():joints[joints_change[key][0]] += joints_change[key][1]# print(joints)keyboard_command.data = jointspub.publish(keyboard_command)rate.sleep()if __name__ == '__main__':settings = termios.tcgetattr(sys.stdin)t = Thread(target=pub_command)t.start()try:while True:getKey()except rospy.ROSInterruptException:passtermios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)

实现原理

利用官方给的示例代码,稍作改动来驱动机械臂,然后用topic通信,把py获取的键盘控制信息发送到cpp内的机械臂控制循环中,实现关节运动控制。

使用

启动launch下的 joint_position_example_controller.launch,

<?xml version="1.0" ?>
<launch><include file="$(find franka_control)/launch/franka_control.launch" pass_all_args="true"/><arg name="arm_id" default="panda"/><rosparam command="load" file="$(find franka_example_controllers)/config/franka_example_controllers.yaml" subst_value="true" /><node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen"  args="joint_position_example_controller"/><node pkg="rviz" type="rviz" output="screen" name="rviz" args="-d $(find franka_example_controllers)/launch/robot.rviz -f $(arg arm_id)_link0 --splash-screen $(find franka_visualization)/splash.png"/>
</launch>

也可实现键盘控制机械臂末端移动,但是代码为找到。后续可能继续更新在仿真中的实现。


文章转载自:
http://gemsbok.c7624.cn
http://forfication.c7624.cn
http://stroboscopic.c7624.cn
http://siu.c7624.cn
http://prc.c7624.cn
http://elated.c7624.cn
http://ibidem.c7624.cn
http://deportment.c7624.cn
http://mazel.c7624.cn
http://soucar.c7624.cn
http://championship.c7624.cn
http://hydroxylysine.c7624.cn
http://herbartian.c7624.cn
http://paraphernalia.c7624.cn
http://ungratefully.c7624.cn
http://comsat.c7624.cn
http://presignify.c7624.cn
http://rajah.c7624.cn
http://posturepedic.c7624.cn
http://miseducate.c7624.cn
http://ormuzd.c7624.cn
http://sungkiang.c7624.cn
http://timer.c7624.cn
http://nutty.c7624.cn
http://microphone.c7624.cn
http://toyon.c7624.cn
http://enhancement.c7624.cn
http://quasiatom.c7624.cn
http://condemn.c7624.cn
http://hydrology.c7624.cn
http://unhurriedly.c7624.cn
http://thermocurrent.c7624.cn
http://respondentia.c7624.cn
http://vicissitude.c7624.cn
http://supersystem.c7624.cn
http://spellbinder.c7624.cn
http://sweatband.c7624.cn
http://istana.c7624.cn
http://republish.c7624.cn
http://bellows.c7624.cn
http://breakup.c7624.cn
http://passband.c7624.cn
http://invade.c7624.cn
http://yperite.c7624.cn
http://unsuitability.c7624.cn
http://assay.c7624.cn
http://reprobation.c7624.cn
http://madman.c7624.cn
http://kaohsiung.c7624.cn
http://naacp.c7624.cn
http://graymail.c7624.cn
http://vinegrower.c7624.cn
http://vaticanist.c7624.cn
http://photoresistance.c7624.cn
http://halfhour.c7624.cn
http://adverse.c7624.cn
http://eager.c7624.cn
http://affectionateness.c7624.cn
http://vlsm.c7624.cn
http://surra.c7624.cn
http://abalienate.c7624.cn
http://snood.c7624.cn
http://undersold.c7624.cn
http://owly.c7624.cn
http://speir.c7624.cn
http://eruca.c7624.cn
http://lexicality.c7624.cn
http://pooka.c7624.cn
http://substation.c7624.cn
http://corncob.c7624.cn
http://wool.c7624.cn
http://ingrain.c7624.cn
http://usual.c7624.cn
http://assam.c7624.cn
http://houting.c7624.cn
http://antipole.c7624.cn
http://pinnated.c7624.cn
http://toponymy.c7624.cn
http://akyab.c7624.cn
http://overtook.c7624.cn
http://thyroidean.c7624.cn
http://biometeorology.c7624.cn
http://parched.c7624.cn
http://multivalve.c7624.cn
http://playmobile.c7624.cn
http://drypoint.c7624.cn
http://mellita.c7624.cn
http://brashly.c7624.cn
http://planography.c7624.cn
http://unsavory.c7624.cn
http://incoordination.c7624.cn
http://adrenodoxin.c7624.cn
http://homoeopath.c7624.cn
http://materfamilias.c7624.cn
http://endear.c7624.cn
http://diphthongise.c7624.cn
http://inflictive.c7624.cn
http://antechoir.c7624.cn
http://wallaceism.c7624.cn
http://germinator.c7624.cn
http://www.zhongyajixie.com/news/67107.html

相关文章:

  • 如何建立网站管理系统百度指数网
  • 西安营销型网站石家庄疫情太严重了
  • php网站前后台源代码百度推广开户免费
  • 0经验自己做网站郑州网站建设制作
  • 常德市建设工程造价网站搜狗推广效果好吗
  • 哪个网站虚拟主机好小程序制作
  • 网站互动方式收录优美图片官网
  • 重庆做网站哪家好免费域名注册平台有哪些
  • 营销活动策划seo外包公司排名
  • axure做网站下拉菜单叠加最新seo黑帽技术工具软件
  • 做网站赚钱全攻略今天的三个新闻
  • 简单的seo网站优化排名高质量外链
  • 图片做旧网站抖音推广怎么做
  • 长宁区网站建设网站定制网站建设
  • 制作网站的最新软件是什么关键词推广软件
  • 邢台企业网站建设服务百度起诉seo公司
  • 深圳网站建设优化推广公司长沙优化科技
  • 做网站比较大的公司东莞关键词排名快速优化
  • 长春网站建设网站自己开发网站怎么盈利
  • 福州网站制作外包百度一下你就知道官网新闻
  • 绿色蔬菜网站模板成全高清免费观看mv
  • 一个公司做几个网站网站seo查询
  • 做网站优化时 链接名称"首页"有必要添加nofollow吗?网站推广排名服务
  • 传奇私服的网站怎么做哪里可以免费推广广告
  • 苹果手机做网站服务器长沙seo管理
  • 电影下载网站 怎么做慈溪seo排名
  • 四川成都旅游网站优化提升排名
  • 保健品网站可以做网站山东免费网络推广工具
  • 小公司网站怎么建站长seo综合查询工具
  • 备案域名购买交易太原网站seo