Fixed ur_robotiq_control.launch.py error
added ur_robotiq_servo
This commit is contained in:
parent
503587c227
commit
ab2278c0c8
@ -6,7 +6,9 @@ RUN apt-get update && apt-get install -y \
|
||||
python3-colcon-common-extensions python3-pip \
|
||||
ros-humble-xacro \
|
||||
ros-humble-hardware-interface \
|
||||
ros-humble-controller-interface
|
||||
ros-humble-controller-interface \
|
||||
ros-humble-joy \
|
||||
ros-humble-teleop-twist-joy
|
||||
|
||||
COPY requirements.txt ./
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
@ -32,4 +34,5 @@ RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
|
||||
ENV PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/ros/humble/bin"
|
||||
|
||||
# Source the workspace
|
||||
RUN echo "source install/setup.bash" >> /root/.bashrc
|
||||
CMD ["/bin/bash"]
|
||||
|
40
README.md
40
README.md
@ -32,13 +32,41 @@ To download this repository and all of its included submodules, follow these ste
|
||||
cd UR-Robotiq
|
||||
```
|
||||
|
||||
* When using the "ur_robotiq.urdf" file first run
|
||||
```bash
|
||||
cd /ros2_ws/src/ur_robotiq_description/urdf
|
||||
ros2 run xacro xacro ur_robotiq.urdf.xacro > ur_robotiq.urdf
|
||||
```
|
||||
* Run the following command to start the Docker Compose:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
docker compose up -d
|
||||
```
|
||||
* Give X11 permission to accept the stream of the container window:
|
||||
```bash
|
||||
xhost +
|
||||
```
|
||||
* Get the name of the container:
|
||||
```bash
|
||||
docker ps
|
||||
```
|
||||
* Access the terminal of the docker container
|
||||
```bash
|
||||
docker exec -it <name of docker container> /bin/bash
|
||||
```
|
||||
|
||||
## Working with UR + Robotiq
|
||||
In general you need to start up the UR Robotiq Controller,
|
||||
here the *robot_ip* has to be defined and if you want to start up the real robot or use fake hardware and if you want to launch rviz!
|
||||
```bash
|
||||
ros2 launch ur_robotiq_description ur_robotiq_control.launch.py robot_ip:=aaa.bbb.ccc.ddd use_fake_hardware:=<true/false(default)> launch_rviz:=<true/false(default)>
|
||||
```
|
||||
|
||||
In addition you can start up the moveit interface:
|
||||
```bash
|
||||
ros2 launch ur_robotiq_moveit_config ur_robotiq_moveit.launch.py use_fake_hardware:=<true/false(default)>
|
||||
```
|
||||
|
||||
### use_fake_hardware:=true
|
||||
Terminal 1.:
|
||||
```bash
|
||||
ros2 launch ur_robotiq_description ur_robotiq_control.launch.py robot_ip:=aaa.bbb.ccc.ddd use_fake_hardware:=true launch_rviz:=false
|
||||
```
|
||||
Terminal 2.:
|
||||
```bash
|
||||
ros2 launch ur_robotiq_moveit_config ur_robotiq_moveit.launch.py use_fake_hardware:=true
|
||||
```
|
||||
|
@ -13,6 +13,7 @@ services:
|
||||
- DISPLAY=$DISPLAY
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
- /dev/input:/dev/input
|
||||
|
||||
networks:
|
||||
ros_network:
|
||||
|
@ -191,7 +191,11 @@ def launch_setup(context, *args, **kwargs):
|
||||
control_node = Node(
|
||||
package="controller_manager",
|
||||
executable="ros2_control_node",
|
||||
parameters=[robot_description, update_rate_config_file, initial_joint_controllers],
|
||||
parameters=[
|
||||
robot_description,
|
||||
update_rate_config_file,
|
||||
ParameterFile(initial_joint_controllers, allow_substs=True),
|
||||
],
|
||||
output="screen",
|
||||
condition=IfCondition(use_fake_hardware),
|
||||
)
|
||||
@ -199,7 +203,11 @@ def launch_setup(context, *args, **kwargs):
|
||||
ur_control_node = Node(
|
||||
package="ur_robot_driver",
|
||||
executable="ur_ros2_control_node",
|
||||
parameters=[robot_description, update_rate_config_file, initial_joint_controllers],
|
||||
parameters=[
|
||||
robot_description,
|
||||
update_rate_config_file,
|
||||
ParameterFile(initial_joint_controllers, allow_substs=True),
|
||||
],
|
||||
output="screen",
|
||||
condition=UnlessCondition(use_fake_hardware),
|
||||
)
|
||||
@ -282,55 +290,58 @@ def launch_setup(context, *args, **kwargs):
|
||||
arguments=["-d", rviz_config_file],
|
||||
)
|
||||
|
||||
joint_state_broadcaster_spawner = Node(
|
||||
package="controller_manager",
|
||||
executable="spawner",
|
||||
arguments=["joint_state_broadcaster", "--controller-manager", "/controller_manager"],
|
||||
)
|
||||
|
||||
io_and_status_controller_spawner = Node(
|
||||
package="controller_manager",
|
||||
executable="spawner",
|
||||
arguments=["io_and_status_controller", "-c", "/controller_manager"],
|
||||
)
|
||||
|
||||
speed_scaling_state_broadcaster_spawner = Node(
|
||||
# Spawn controllers
|
||||
def controller_spawner(name, active=True):
|
||||
inactive_flags = ["--inactive"] if not active else []
|
||||
return Node(
|
||||
package="controller_manager",
|
||||
executable="spawner",
|
||||
arguments=[
|
||||
name,
|
||||
"--controller-manager",
|
||||
"/controller_manager",
|
||||
"--controller-manager-timeout",
|
||||
controller_spawner_timeout,
|
||||
]
|
||||
+ inactive_flags,
|
||||
)
|
||||
|
||||
controller_spawner_names = [
|
||||
"joint_state_broadcaster",
|
||||
"io_and_status_controller",
|
||||
"speed_scaling_state_broadcaster",
|
||||
"--controller-manager",
|
||||
"/controller_manager",
|
||||
],
|
||||
)
|
||||
|
||||
force_torque_sensor_broadcaster_spawner = Node(
|
||||
package="controller_manager",
|
||||
executable="spawner",
|
||||
arguments=[
|
||||
"force_torque_sensor_broadcaster",
|
||||
"--controller-manager",
|
||||
"/controller_manager",
|
||||
],
|
||||
)
|
||||
]
|
||||
controller_spawner_inactive_names = ["forward_position_controller"]
|
||||
|
||||
forward_position_controller_spawner_stopped = Node(
|
||||
package="controller_manager",
|
||||
executable="spawner",
|
||||
arguments=["forward_position_controller", "-c", "/controller_manager", "--stopped"],
|
||||
)
|
||||
controller_spawners = [controller_spawner(name) for name in controller_spawner_names] + [
|
||||
controller_spawner(name, active=False) for name in controller_spawner_inactive_names
|
||||
]
|
||||
|
||||
# There may be other controllers of the joints, but this is the initially-started one
|
||||
initial_joint_controller_spawner_started = Node(
|
||||
package="controller_manager",
|
||||
executable="spawner",
|
||||
arguments=[initial_joint_controller, "-c", "/controller_manager"],
|
||||
arguments=[
|
||||
initial_joint_controller,
|
||||
"-c",
|
||||
"/controller_manager",
|
||||
"--controller-manager-timeout",
|
||||
controller_spawner_timeout,
|
||||
],
|
||||
condition=IfCondition(activate_joint_controller),
|
||||
)
|
||||
initial_joint_controller_spawner_stopped = Node(
|
||||
package="controller_manager",
|
||||
executable="spawner",
|
||||
arguments=[initial_joint_controller, "-c", "/controller_manager", "--stopped"],
|
||||
arguments=[
|
||||
initial_joint_controller,
|
||||
"-c",
|
||||
"/controller_manager",
|
||||
"--controller-manager-timeout",
|
||||
controller_spawner_timeout,
|
||||
"--inactive",
|
||||
],
|
||||
condition=UnlessCondition(activate_joint_controller),
|
||||
)
|
||||
|
||||
@ -344,14 +355,9 @@ def launch_setup(context, *args, **kwargs):
|
||||
controller_stopper_node,
|
||||
robot_state_publisher_node,
|
||||
rviz_node,
|
||||
joint_state_broadcaster_spawner,
|
||||
io_and_status_controller_spawner,
|
||||
speed_scaling_state_broadcaster_spawner,
|
||||
force_torque_sensor_broadcaster_spawner,
|
||||
forward_position_controller_spawner_stopped,
|
||||
initial_joint_controller_spawner_stopped,
|
||||
initial_joint_controller_spawner_started,
|
||||
]
|
||||
] + controller_spawners
|
||||
|
||||
return nodes_to_start
|
||||
|
||||
|
25
src/ur_robotiq_servo/package.xml
Normal file
25
src/ur_robotiq_servo/package.xml
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0"?>
|
||||
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||
<package format="3">
|
||||
<name>ur_robotiq_servo</name>
|
||||
<version>0.0.0</version>
|
||||
<description>TODO: Package description</description>
|
||||
<maintainer email="nikolaus.feith@unileoben.ac.at">niko</maintainer>
|
||||
<license>TODO: License declaration</license>
|
||||
|
||||
<depend>rclpy</depend>
|
||||
<depend>sensor_msgs</depend>
|
||||
<depend>geometry_msgs</depend>
|
||||
<depend>std_msgs</depend>
|
||||
<depend>joy</depend>
|
||||
<depend>moveit_servo</depend>
|
||||
|
||||
<test_depend>ament_copyright</test_depend>
|
||||
<test_depend>ament_flake8</test_depend>
|
||||
<test_depend>ament_pep257</test_depend>
|
||||
<test_depend>python3-pytest</test_depend>
|
||||
|
||||
<export>
|
||||
<build_type>ament_python</build_type>
|
||||
</export>
|
||||
</package>
|
0
src/ur_robotiq_servo/resource/ur_robotiq_servo
Normal file
0
src/ur_robotiq_servo/resource/ur_robotiq_servo
Normal file
4
src/ur_robotiq_servo/setup.cfg
Normal file
4
src/ur_robotiq_servo/setup.cfg
Normal file
@ -0,0 +1,4 @@
|
||||
[develop]
|
||||
script_dir=$base/lib/ur_robotiq_servo
|
||||
[install]
|
||||
install_scripts=$base/lib/ur_robotiq_servo
|
25
src/ur_robotiq_servo/setup.py
Normal file
25
src/ur_robotiq_servo/setup.py
Normal file
@ -0,0 +1,25 @@
|
||||
from setuptools import find_packages, setup
|
||||
|
||||
package_name = 'ur_robotiq_servo'
|
||||
|
||||
setup(
|
||||
name=package_name,
|
||||
version='0.0.0',
|
||||
packages=find_packages(exclude=['test']),
|
||||
data_files=[
|
||||
('share/ament_index/resource_index/packages',
|
||||
['resource/' + package_name]),
|
||||
('share/' + package_name, ['package.xml']),
|
||||
],
|
||||
install_requires=['setuptools'],
|
||||
zip_safe=True,
|
||||
maintainer='niko',
|
||||
maintainer_email='nikolaus.feith@unileoben.ac.at',
|
||||
description='TODO: Package description',
|
||||
license='TODO: License declaration',
|
||||
tests_require=['pytest'],
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
],
|
||||
},
|
||||
)
|
25
src/ur_robotiq_servo/test/test_copyright.py
Normal file
25
src/ur_robotiq_servo/test/test_copyright.py
Normal file
@ -0,0 +1,25 @@
|
||||
# Copyright 2015 Open Source Robotics Foundation, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from ament_copyright.main import main
|
||||
import pytest
|
||||
|
||||
|
||||
# Remove the `skip` decorator once the source file(s) have a copyright header
|
||||
@pytest.mark.skip(reason='No copyright header has been placed in the generated source file.')
|
||||
@pytest.mark.copyright
|
||||
@pytest.mark.linter
|
||||
def test_copyright():
|
||||
rc = main(argv=['.', 'test'])
|
||||
assert rc == 0, 'Found errors'
|
25
src/ur_robotiq_servo/test/test_flake8.py
Normal file
25
src/ur_robotiq_servo/test/test_flake8.py
Normal file
@ -0,0 +1,25 @@
|
||||
# Copyright 2017 Open Source Robotics Foundation, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from ament_flake8.main import main_with_errors
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.mark.flake8
|
||||
@pytest.mark.linter
|
||||
def test_flake8():
|
||||
rc, errors = main_with_errors(argv=[])
|
||||
assert rc == 0, \
|
||||
'Found %d code style errors / warnings:\n' % len(errors) + \
|
||||
'\n'.join(errors)
|
23
src/ur_robotiq_servo/test/test_pep257.py
Normal file
23
src/ur_robotiq_servo/test/test_pep257.py
Normal file
@ -0,0 +1,23 @@
|
||||
# Copyright 2015 Open Source Robotics Foundation, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from ament_pep257.main import main
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.mark.linter
|
||||
@pytest.mark.pep257
|
||||
def test_pep257():
|
||||
rc = main(argv=['.', 'test'])
|
||||
assert rc == 0, 'Found code style errors / warnings'
|
0
src/ur_robotiq_servo/ur_robotiq_servo/__init__.py
Normal file
0
src/ur_robotiq_servo/ur_robotiq_servo/__init__.py
Normal file
Loading…
Reference in New Issue
Block a user