{"product_id":"138302","title":"Let's create and code a robot software that you can study independently using ROS2. ","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jXPCfEsVO0JrvwH5PRwIkIGWwFQBz.png?v=1765062002\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\n\n\u003cdiv style=\"width:95%\"\u003e\n\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e Let's create and code a robot software that you can study independently using ROS2. \u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/112250822\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e Description \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eBook Introduction\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cdiv\u003e\u003cdiv\u003e This book is for those who know about the existence of a tool called ROS and want to study it, but have not yet started studying it, or have tried various examples but cannot get a feel for it.\u003cbr\u003e Based on my experience as a lecturer for many years, I wrote this book as if I were telling a story in a way that readers can easily understand. \u003cbr\u003eThe goal of this book is to help readers quickly understand the principles and usage of ROS so they can do what they want.\u003cbr\u003e\u003cbr\u003e I'm not saying that this one book is enough.\u003cbr\u003e What I, as the author, want to say to my readers is, \"Wouldn't it be easier to learn this way?\"\u003cbr\u003e In a field of mathematics, it would be important to have a book that covers everything, but I don't think it's possible to approach the ROS ecosystem, where an incalculable number of people participate and share various packages, in that way.\u003cbr\u003e Additionally, we have a very excellent ROS evangelist named Dr. Pyo Yun-seok, and through his books and materials, we can learn about the basic operating principles of ROS2.\u003cbr\u003e So I've written this book in the way I like to approach it in my classes.\u003cbr\u003e - From the author's words\u003cbr\u003e\u003cbr\u003e\n\u003c\/div\u003e\u003c\/div\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/tbody\u003e\u003c\/table\u003e\n\u003cdiv\u003e\u003cul\u003e\u003cli\u003e You can preview some of the book's contents.\u003cbr\u003e \u003cspan\u003ePreview\u003c\/span\u003e\n\n\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eindex\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e  \u003cdiv\u003e·preface\u003cbr\u003e ·The target audience for this book\u003cbr\u003e · Entering\u003cbr\u003e\u003cbr\u003e \u003cb\u003eSettings\u003c\/b\u003e\u003cbr\u003e 1.\u003cbr\u003e Terminal\u003cbr\u003e 1.1 The need for a terminal with split screen\u003cbr\u003e 1.2 Trying out the basic terminal\u003cbr\u003e 1.3 Terminator\u003cbr\u003e 1.4 Tilix\u003cbr\u003e 2.\u003cbr\u003e Editor\u003cbr\u003e 2.1 Installing Sublime Text\u003cbr\u003e 2.2 Trying Sublime Text\u003cbr\u003e 3. Install ROS\u003cbr\u003e 3.1 Find the ROS Galactic version installation page\u003cbr\u003e 3.2 Set Locale\u003cbr\u003e 3.3 Setup Sources\u003cbr\u003e 3.3 Install ROS2 packages\u003cbr\u003e 3.4 Verifying ROS2 Installation\u003cbr\u003e 4.\u003cbr\u003e finish\u003cbr\u003e\u003cbr\u003e \u003cb\u003eGetting familiar with the terminal, bashrc, and Linux\u003c\/b\u003e\u003cbr\u003e 1.\u003cbr\u003e Purpose of this chapter\u003cbr\u003e 2.\u003cbr\u003e Basic folder-related commands in Ubuntu\u003cbr\u003e 2.1 Let's create a folder - mkdir\u003cbr\u003e 2.2 Move the folder to the folder you want to install - cd\u003cbr\u003e 2.3 Delete command = rm\u003cbr\u003e 3.\u003cbr\u003e bashrc\u003cbr\u003e 3.1 Shell\u003cbr\u003e 3.2 .bashrc\u003cbr\u003e 3.3 Enter commands in .bashrc\u003cbr\u003e 4.\u003cbr\u003e Setting alias in .bashrc\u003cbr\u003e 4.1 Setting up aliases\u003cbr\u003e 4.2 Setting the galactic setting as an alias\u003cbr\u003e 4.3 Also specify source ~\/.bashrc as an alias\u003cbr\u003e 5. ROS2 domain settings\u003cbr\u003e 6.\u003cbr\u003e finish\u003cbr\u003e\u003cbr\u003e \u003cb\u003eLearning basic ROS2 commands\u003c\/b\u003e\u003cbr\u003e 1.\u003cbr\u003e Purpose of this chapter\u003cbr\u003e 2.\u003cbr\u003e Installing and Running Turtlesim\u003cbr\u003e 3. \u003cbr\u003eRe-emphasizing the setup.bash environment\u003cbr\u003e 4. ROS Node\u003cbr\u003e 5. ROS Service\u003cbr\u003e 5.1 Service Concept\u003cbr\u003e 5.2 ros2 service list\u003cbr\u003e 5.3 ros2 service type\u003cbr\u003e 5.4 Service Definition\u003cbr\u003e 5.5 Introduction to Mobile Robots\u003cbr\u003e 5.6 How to call a service service call\u003cbr\u003e 5.7 namespace\u003cbr\u003e 5.8 spawn\u003cbr\u003e 6. ROS Topic\u003cbr\u003e 6.1 Topic Concept\u003cbr\u003e 6.2 ros2 topic list\u003cbr\u003e 6.3 ros2 topic type\u003cbr\u003e 6.4 ros2 topic info\u003cbr\u003e 6.5 Checking the message type to use the topic\u003cbr\u003e 6.6 Subscribing to a topic in the terminal\u003cbr\u003e 6.7 Try issuing a driving command topic\u003cbr\u003e 6.8 rqt_graph showing the flow of topics\u003cbr\u003e 7. ROS Action\u003cbr\u003e 7.1 Run node turtle_teleop_key\u003cbr\u003e 7.2 ros2 action list\u003cbr\u003e 7.3 ros2 action send_goal\u003cbr\u003e 8.\u003cbr\u003e finish\u003cbr\u003e\u003cbr\u003e \u003cb\u003eHandling ROS2 Topics with Python\u003c\/b\u003e\u003cbr\u003e 1.\u003cbr\u003e Purpose of this chapter\u003cbr\u003e 2.\u003cbr\u003e Installation and Preparation\u003cbr\u003e 3.\u003cbr\u003e Simple usage of Jupyter and Python basics\u003cbr\u003e 3.1 Basic Use of Jupyter\u003cbr\u003e 3.2 Markdown Document\u003cbr\u003e 4.\u003cbr\u003e Subscribing to Topics with Python\u003cbr\u003e 4.1 Preparing to subscribe to a topic with Jupyter\u003cbr\u003e 4.2 A word of caution before getting into coding\u003cbr\u003e 4.3 Importing modules required for subscription \u003cbr\u003e4.4 Python Import Method\u003cbr\u003e 4.5 Initializing rclpy and creating nodes\u003cbr\u003e 4.6 Writing a callback function to be executed in Subscription\u003cbr\u003e 4.7 Creating a Topic Subscriber\u003cbr\u003e 4.8 Things to keep in mind when using Jupyter\u003cbr\u003e 4.9 Limit the number of topics you receive\u003cbr\u003e 5.\u003cbr\u003e Publishing Topics with Python\u003cbr\u003e 5.1 Preparing to publish topics with Jupyter\u003cbr\u003e 5.2 Initializing rclpy and messages for topic publishing\u003cbr\u003e 5.3 Declaring Twist as the data type of the cmd_vel topic\u003cbr\u003e 5.4 Simple Publishing of the cmd_vel Topic with Python\u003cbr\u003e 5.5 Publishing a topic using a timer in ROS\u003cbr\u003e 6.\u003cbr\u003e Types of nodes\u003cbr\u003e 7.\u003cbr\u003e finish\u003cbr\u003e\u003cbr\u003e \u003cb\u003eHandling Service Clients with Python\u003c\/b\u003e\u003cbr\u003e 1.\u003cbr\u003e Purpose of this chapter\u003cbr\u003e 2.\u003cbr\u003e Using the ROS Service Client with Python\u003cbr\u003e 2.1 Preparing for Learning and Creating Nodes for the Service Client\u003cbr\u003e 2.2 Creating a Service Client Requesting a Service\u003cbr\u003e 2.3 Preparing the service definition for use in Python\u003cbr\u003e 2.4 Try a simple service call\u003cbr\u003e 2.5 Trying wait_for_service \u003cbr\u003e2.6 Checking the status of the service client execution\u003cbr\u003e 3.\u003cbr\u003e finish\u003cbr\u003e\u003cbr\u003e \u003cb\u003eUnderstanding Python Classes for ROS2 Learning\u003c\/b\u003e\u003cbr\u003e 1.\u003cbr\u003e Purpose of this chapter\u003cbr\u003e 2.\u003cbr\u003e Preparation and just drawing the sin function\u003cbr\u003e 2.1 Preparing a blank document\u003cbr\u003e 2.2 Preparing to use matplotlib and importing it\u003cbr\u003e 2.3 Preparing the domain\u003cbr\u003e 2.4 Finding the sin function\u003cbr\u003e 2.5 Drawing a graph\u003cbr\u003e 2.6 Implementing with function def\u003cbr\u003e 3.\u003cbr\u003e Drawing the sin function as a class\u003cbr\u003e 3.1 First, let's register a variable in the class.\u003cbr\u003e 3.2 Complete the class for drawing trigonometric functions\u003cbr\u003e 4.\u003cbr\u003e Class Inherritance\u003cbr\u003e 5.\u003cbr\u003e Method Overriding\u003cbr\u003e 6.\u003cbr\u003e Using super() in a class\u003cbr\u003e 7.\u003cbr\u003e finish\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCreating packages and covering topics\u003c\/b\u003e\u003cbr\u003e 1.\u003cbr\u003e Purpose of this chapter\u003cbr\u003e 2.\u003cbr\u003e Installation and Preparation\u003cbr\u003e 3.\u003cbr\u003e Creating a package for the first time\u003cbr\u003e 3.1 Let's just create a package.\u003cbr\u003e 3.2 Building a Package and Setting Up a Workspace\u003cbr\u003e 4.\u003cbr\u003e Add a Topic Subscriber node\u003cbr\u003e 4.1 Adding a new subscriber file\u003cbr\u003e 4.2 Description of the my_subscriber.py file \u003cbr\u003e4.3 Running the newly added node\u003cbr\u003e 5.\u003cbr\u003e Add a Topic Publisher node\u003cbr\u003e 5.1 Description of the my_publisher.py file\u003cbr\u003e 5.2 If you want to clear the build information of the workspace\u003cbr\u003e 5.3 Running my_publisher\u003cbr\u003e 6.\u003cbr\u003e finish\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCreate message definitions and handle them in topics and services\u003c\/b\u003e\u003cbr\u003e 1.\u003cbr\u003e Purpose of this chapter\u003cbr\u003e 2.\u003cbr\u003e Message Definition\u003cbr\u003e 2.1 Creating a separate package for message definitions\u003cbr\u003e 2.2 Creating a message definition msg definition\u003cbr\u003e 2.3 Building a package with the newly defined msg\u003cbr\u003e 3.\u003cbr\u003e Subscribe to two topics and publish to one topic.\u003cbr\u003e 3.1 Let's start with the pose topic driven part published by turtlesim.\u003cbr\u003e 3.2 Let's use the newly defined CmdAndPoseVel.\u003cbr\u003e 3.3 Subscribe to the cmd_vel topic\u003cbr\u003e 3.4 Let's publish the results of subscribing to two topics.\u003cbr\u003e 4.\u003cbr\u003e Let me create a service definition.\u003cbr\u003e 4.1 Creating and Building a Service Definition\u003cbr\u003e 4.2 Let's create a service server\u003cbr\u003e 4.3 Let's create client code inside the service server code. \u003cbr\u003e4.4 The problem of arranging multiple turtles in a circle\u003cbr\u003e 4.5 Implementing a service server that deploys multiple turtles\u003cbr\u003e 4.6 Let's introduce several turtles.\u003cbr\u003e 5.\u003cbr\u003e finish\u003cbr\u003e\u003cbr\u003e \u003cb\u003eGetting used to the action\u003c\/b\u003e\u003cbr\u003e 1.\u003cbr\u003e Purpose of this chapter\u003cbr\u003e 2.\u003cbr\u003e Creating an action definition\u003cbr\u003e 2.1 Preparing to Create an Action Definition\u003cbr\u003e 2.2 Creating an Action Definition\u003cbr\u003e 2.3 Building an Action Definition\u003cbr\u003e 3.\u003cbr\u003e A brief look at the concept with a simple action server.\u003cbr\u003e 3.1 Action server that simply displays results\u003cbr\u003e 3.2 Adding feedback to the action server\u003cbr\u003e 4. ROS2 Multi-Threading Basics\u003cbr\u003e 5.\u003cbr\u003e Create an action server that moves a specified distance\u003cbr\u003e 5.1 Full code\u003cbr\u003e 5.2 main: Applying multithreading\u003cbr\u003e 5.3 TurtleSub_Action: Subscribe to the pose topic\u003cbr\u003e 5.4 DistTurtleServer: Move a user-specified distance\u003cbr\u003e 6.\u003cbr\u003e A quick look at the Action Server\u003cbr\u003e 7.\u003cbr\u003e finish\u003cbr\u003e\u003cbr\u003e \u003cb\u003eHandling parameters\u003c\/b\u003e\u003cbr\u003e 1.\u003cbr\u003e Purpose of this chapter\u003cbr\u003e 2.\u003cbr\u003e Try using parameters with terminal commands\u003cbr\u003e 2.1 Practice Environment\u003cbr\u003e 2.2 ros2 param list\u003cbr\u003e 2.3 ros2 param get\u003cbr\u003e 2.4 ros2 param set\u003cbr\u003e 2.5 ros2 param dump\u003cbr\u003e 2.6 ros2 param load\u003cbr\u003e 3. \u003cbr\u003eParameters accessed through code\u003cbr\u003e 3.1 First, let's declare the parameters.\u003cbr\u003e 3.2 How to use parameters in code\u003cbr\u003e 3.3 Notice that parameters are changing\u003cbr\u003e 4.\u003cbr\u003e finish\u003cbr\u003e\u003cbr\u003e \u003cb\u003eSeveral tools for debugging and observation\u003c\/b\u003e\u003cbr\u003e 1.\u003cbr\u003e Purpose of the village head\u003cbr\u003e 2.\u003cbr\u003e log\u003cbr\u003e 2.1 Checking logs using rqt_console\u003cbr\u003e 2.2 Creating your own log messages\u003cbr\u003e 3.rqt\u003cbr\u003e 3.1 rqt_graph\u003cbr\u003e 3.2 rqt_plot\u003cbr\u003e 3.3 topic monitor\u003cbr\u003e 3.4 topic publisher\u003cbr\u003e 4.\u003cbr\u003e rosbag\u003cbr\u003e 5. ROSLAUNCH\u003cbr\u003e 5.1 roslaunch basics\u003cbr\u003e 5.2 Specifying parameters\u003cbr\u003e 6.\u003cbr\u003e finish\u003cbr\u003e\u003cbr\u003e In conclusion\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eDetailed image\u003c\/b\u003e \u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cdiv\u003e\u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate3931\/MidCate004\/393031966(1).jpg\" border=\"0\" alt=\"Detailed Image 1\"\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003ePublisher's Review\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e I have been studying and developing robots for a very long time.\u003cbr\u003e I started out as a student and worked on everything from small-scale educational robots to the development of laparoscopic surgical robots that cost hundreds of millions of won.\u003cbr\u003e There are many areas I'm interested in, but it hasn't been easy to get involved in actual development. \u003cbr\u003eBut somehow, I ended up challenging myself with various projects, including an educational robot that uses block coding, a robot for bomb disposal, a skate robot (a type of balancing robot that helps people move by maintaining balance), a 3D printer, and even a deep learning-based project.\u003cbr\u003e Whether I'm developing or using a robot, the friend who always helps me implement functions conveniently is ROS (Robot Operating System).\u003cbr\u003e Of course, I didn't use ROS from the beginning.\u003cbr\u003e I first learned about ROS around 2012, but it wasn't until a few years later that I actually started studying and using it, and even then, several years later, that I developed robotics software using ROS. After using ROS, I found myself thinking, \"Wow! If only I had used this wonderful tool sooner! It would have been so much easier.\"\u003cbr\u003e\u003cbr\u003e Recently, I've been participating in various educational programs to spread the word about robotics and deep learning. \u003cbr\u003eWe also strive to provide excellent books and materials to students in various locations.\u003cbr\u003e Then, I thought that I would like to learn the functions of robots and provide some help to those who want to learn ROS for robot development.\u003cbr\u003e Rather than talking about the grand history of ROS, its philosophy, or its architecture, I wanted to talk about how to use ROS really well.\u003cbr\u003e\u003cbr\u003e I thought I should teach everything I could about robot development, including ROS, block coding, control theory, robotics, digital filters, and deep learning.\u003cbr\u003e I don't know if it will be one book per field or in a different format, but I plan to tell the stories one by one.\u003cbr\u003e\u003cbr\u003e The first book I'm going to start with is ROS2 Galactic.\u003cbr\u003e I don't think it matters whether ROS version is 1 or 2. \u003cbr\u003eI think that it is more important to quickly find the functions you need and how to apply them than which tool you use.\u003cbr\u003e Phrases like 'perfect organization' or 'this one book is all you need' don't fit my book.\u003cbr\u003e I don't think I have the ability to organize more material in more depth than what's available on the Internet.\u003cbr\u003e As I mentioned earlier, I want to point out that I'm thinking about ways for readers to quickly learn the tools.\u003cbr\u003e\u003cbr\u003e This book will first focus on the basics of ROS usage, but before that, we'll briefly cover Linux usage. ROS works very well on Ubuntu (a Linux-based OS), so familiarity with Ubuntu is essential. \u003cbr\u003eWe will also cover how to describe robots with URDF, how to simulate them in Gazebo, and how to use Arduino with ROS in the next two volumes.\u003cbr\u003e Currently, a useful tool called ROS is in a transitional phase from ROS1 to ROS2, as the ROS2 version came out a few years ago.\u003cbr\u003e There is a lot of debate in the internet community about ROS1 vs. ROS2, but I think it is a meaningless debate.\u003cbr\u003e Because you have to know how to handle everything.\u003cbr\u003e Here, I will talk about ROS based on Ubuntu 20.04.\u003cbr\u003e The reason is simple.\u003cbr\u003e Because the last Ubuntu version that supports both ROS1 and ROS2 is 20.04.\u003cbr\u003e\u003cbr\u003e By the time this book is published, Ubuntu will likely have been updated to version 22.04.\u003cbr\u003e But that doesn't matter either.\u003cbr\u003e Because there are still many people developing with ROS1 Kinetic version on Ubuntu 16.04. \u003cbr\u003eWhat matters is not the version, but understanding how to use it.\u003cbr\u003e There will definitely be a new ROS2 version coming out for Ubuntu 22.04, but the basics won't change, so you don't have to worry about it too much. \u003cbr\u003e\n\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e GOODS SPECIFICS \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003ePublication date:\u003c\/strong\u003e September 6, 2022\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003ePages, weight, size:\u003c\/strong\u003e 433 pages | 714g | 185*257*15mm\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN13:\u003c\/strong\u003e 9791191198041\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN10:\u003c\/strong\u003e 1191198049 \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cspan\u003e\u003c\/span\u003e\n\n\u003c\/center\u003e\n\n\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893227978794,"sku":"138302","price":38.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/9ab29505085a755596c6937f12f5866b.jpg?v=1765392702","url":"https:\/\/librairie.coreenne.fr\/en\/products\/138302","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}